閉包:掌廚 ? 實(shí)例三 ,閉包 + 屬性
閉包的實(shí)現(xiàn)
class CookBookViewController: KTCHomeViewController 這是最底層
class CookBookViewController: KTCHomeViewController{
//滾動視圖
var scrollView: UIScrollView?
//食材首頁的推薦視圖
private var recommendView: CBRecommendView?
//首頁的食材視圖
private var foodView: CBMaterialView?
//首頁的分類視圖
private var categoryView: CBMaterialView?
//導(dǎo)航的標(biāo)題視圖
private var segCtrl: KTCSegmentCtrl?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
//導(dǎo)航
createMyNav()
//初始化視圖
createHomePageView()
//下載推薦的數(shù)據(jù)
downloadRecommendData()
//下載食材的數(shù)據(jù)
downloadFoodData()
//下載分類的數(shù)據(jù)
downloadCategoryData()
}
//下載分類的數(shù)據(jù)
func downloadCategoryData() {
//參數(shù)
let params = ["methodName":"CategoryIndex"]
let downloader = KTCDownloader()
downloader.delegate = self
downloader.type = .Category
downloader.postWithUrl(kHostUrl, params: params)
}
//下載食材的數(shù)據(jù)
func downloadFoodData() {
//參數(shù)
let dict = ["methodName":"MaterialSubtype"]
let downloader = KTCDownloader()
downloader.delegate = self
downloader.type = .FoodMaterial
downloader.postWithUrl(kHostUrl, params: dict)
}
//初始化視圖
func createHomePageView(){
self.automaticallyAdjustsScrollViewInsets = false
//1办桨、創(chuàng)建一個(gè)滾動視圖
scrollView = UIScrollView()
scrollView!.pagingEnabled = true
scrollView!.showsHorizontalScrollIndicator = false
//設(shè)置代理
scrollView?.delegate = self
view.addSubview(scrollView!)
//約束
scrollView!.snp_makeConstraints {
[weak self]
(make) in
make.edges.equalTo(self!.view).inset(UIEdgeInsetsMake(64, 0, 49, 0))
}
//2觅玻、創(chuàng)建容器視圖
let containerView = UIView.createView()
scrollView!.addSubview(containerView)
//約束
containerView.snp_makeConstraints {
[weak self]
(make) in
make.edges.equalTo(self!.scrollView!)
make.height.equalTo(self!.scrollView!)
}
//3、添加子視圖
//3.1皱炉、推薦
recommendView = CBRecommendView()
containerView.addSubview(recommendView!)
recommendView?.snp_makeConstraints(closure: {
(make) in
make.top.bottom.equalTo(containerView)
make.width.equalTo(kScreenWidth)
make.left.equalTo(containerView)
})
//3.2怀估、食材
foodView = CBMaterialView()
foodView?.backgroundColor = UIColor.redColor()
containerView.addSubview(foodView!)
//約束
foodView?.snp_makeConstraints(closure: { (make) in
make.top.bottom.equalTo(containerView)
make.width.equalTo(kScreenWidth)
make.left.equalTo((recommendView?.snp_right)!)
})
//3.3、分類
categoryView = CBMaterialView()
categoryView?.backgroundColor = UIColor.purpleColor()
containerView.addSubview(categoryView!)
//約束
categoryView?.snp_makeConstraints(closure: { (make) in
make.top.bottom.equalTo(containerView)
make.width.equalTo(kScreenWidth)
make.left.equalTo((foodView?.snp_right)!)
})
//4合搅、修改容器視圖的大小
containerView.snp_makeConstraints { (make) in
make.right.equalTo(categoryView!)
}
}
//下載推薦的數(shù)據(jù)
func downloadRecommendData(){
//參數(shù)
let dict = ["methodName":"SceneHome"]
let downloader = KTCDownloader()
//設(shè)置代理
downloader.delegate = self
downloader.type = .Recommend
downloader.postWithUrl(kHostUrl, params: dict)
}
//創(chuàng)建導(dǎo)航
func createMyNav(){
//MSRK:- One
//標(biāo)題位置
segCtrl = KTCSegmentCtrl(frame: CGRectMake(80, 0, kScreenWidth-80*2, 44), titleNames: ["推薦","食材","分類"])
//設(shè)置代理
segCtrl?.delegate = self
navigationItem.titleView = segCtrl
//掃一掃
addNavBtn("saoyisao", target: self, action: #selector(scanAction), isLeft: true)
//搜索
addNavBtn("search", target: self, action: #selector(searchAction), isLeft: false)
}
//掃一掃
func scanAction(){}
//搜索
func searchAction(){}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//MARK: 首頁推薦部分的方法
//app://food_course_series#98#
//食材課程分集顯示
func gotoFoodCoursePage(link: String){
//第一個(gè)#
let startRange = NSString(string: link).rangeOfString("#")
//第二個(gè)#
let endRange = NSString(string: link).rangeOfString("#", options: NSStringCompareOptions.BackwardsSearch, range: NSMakeRange(0, link.characters.count), locale: nil)
let id = NSString(string: link).substringWithRange(NSMakeRange(startRange.location+1, endRange.location-startRange.location-1))
//跳轉(zhuǎn)界面
let foodCourseCtrl = FoodCourseViewController()
foodCourseCtrl.serialId = id
navigationController?.pushViewController(foodCourseCtrl, animated: true)
}
//顯示首頁推薦的數(shù)據(jù)
func showRecommendData(model: CBRecommendModel){
recommendView?.model = model
//點(diǎn)擊事件
//MARK:- F 實(shí)現(xiàn) final , 傳到這里 就對了多搀。
recommendView?.clickClosure = {
[weak self]
(title:String?, link: String) in
if link.hasPrefix("app://food_course_series") == true {
//app://food_course_series#98#
//食材課程分集顯示
self!.gotoFoodCoursePage(link)
}
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者