闭包:掌厨 Î 实例一 ,闭包的 声明与使用

闭包的 声明与使用

闭包: 实例一 ,闭包 + 属性

一个视图控制器 上面 有 一个 scrollView, 滚动视图 包含 三个界面。

三个界面 都是 表视图, 第一个界面 的 第一个 cell 是 滚动视图,CBRecommendADCell

点击 第一个界面 的 每一副 图片, 都有一个 新的 视图控制器。

class CBRecommendADCell: UITableViewCell , 这个是 最上层


class CBRecommendADCell: UITableViewCell {
    
    //public typealias CBCellClosure = (String?, String) -> Void
    //MARK:-  这个好   A

    //图片的点击事件
    var clickClosure: ((String?, String) -> Void)?
    //              2   A     声明
    
    @IBOutlet weak var scrollView: UIScrollView!

    @IBOutlet weak var pageCtrl: UIPageControl!
    
    
    //数据
    var bannerArray: Array? {
        
        didSet {
            //显示UI
            showData()
            
        }
        
    }
    
    
    func showData(){
        
        //删除之前的子视图
        for sub in scrollView.subviews {
            sub.removeFromSuperview()
        }
        
        
        let cnt = bannerArray?.count
        if cnt > 0 {
            
            //0.添加一个容器视图
            let containerView = UIView.createView()
            scrollView.addSubview(containerView)
            //设置约束
            containerView.snp_makeConstraints(closure: {
                [weak self]
                (make) in
                make.edges.equalTo(self!.scrollView)
                make.height.equalTo(self!.scrollView)
            })
            
            
            
            var lastView: UIView? = nil
            for i in 0.. Void)?) -> CBRecommendADCell {
        //  3     public typealias CBCellClosure = (String?, String) -> Void
        let cellId = "recommendADCellId"
        
        var cell = tableView.dequeueReusableCellWithIdentifier(cellId) as? CBRecommendADCell
        if nil == cell {
            cell = NSBundle.mainBundle().loadNibNamed("CBRecommendADCell", owner: nil, options: nil).last as? CBRecommendADCell
        }
        
        //显示数据
        cell?.bannerArray = model.data?.banner
        
        //点击事件
        //MARK: -   5   C    闭包 的 传递
        cell?.clickClosure = cellClosure
        
        return cell!
    }
    
    
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }
    
}

//MARK: UIScrollView代理
extension CBRecommendADCell: UIScrollViewDelegate {
    
    func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
        
        let index = Int(scrollView.contentOffset.x/scrollView.bounds.size.width)
        pageCtrl.currentPage = index
        
    }
    
}



你可能感兴趣的:(闭包:掌厨 Î 实例一 ,闭包的 声明与使用)