swift3.0 如何优雅的自定义tableViewcell,最简单的自定义cell,闭包事件传递,代码封装。


一:最近在自学swift3.0,故而把OC中最简单自定义cell的方法,照搬到swift试试。 下面说下设计思想。

     1.设计原理,提供接口。下面贴上控制器的代码

   

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        // 1.提供类方法创建cell,默认就是复用好的了
        let cell = HCustomTableViewCell.customCell(tableView: tableView)
        // 2.设置数据(开发中传递model)
        cell.settingCellData(title: "当前是第:\(indexPath.row)行")
        // 3.事件传递(将封装cell内部子控件的点击事件回调控制器)
        cell.btnClickBlock = { () in
            print("点击了按钮,当前是第:\(indexPath.row)行 ,且事件传递到了控制器内");
        }
        // 4. 返回cell。 这基本上能适用100%任何一个你需要的自定义cell的类型
        return cell
    }


   

      怎么样,感觉如何。。从此控制器里再没有复用等太多乱七八槽的代码,简单到几句代码搞定

  2.下面看下自定义cell里面的两个接口方法,一个类方法创建cell,一个是设置cell数据

 // MARK:- public
    public class func customCell(tableView : UITableView)->HCustomTableViewCell{
        let reuseIdentifier = "HCustomTableViewCell";
        var cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier)
        if (cell == nil) {
            cell = HCustomTableViewCell(style: .default, reuseIdentifier: reuseIdentifier)
        }
        return cell as! HCustomTableViewCell
    }
    
    public func settingCellData(title : String) {
        titleLabel.text = title
    }


3。其次也就是闭包的属性的设置,以及调用了。

     

 // 格式( (参数)-> (返回值) )
    public var btnClickBlock:( ()->() )?
 

   按钮的点击事件

  

 @objc private func actionBtnClick(){
        btnClickBlock!()
    }


额:写到这里就完了,,有木有很简单。。。程序学习之路,从精简每一句代码开始

     github地址:swift3.0 最简单的自定义tableViewcell


如果你喜欢这篇文章,或者有任何疑问,可以扫描第一个二维码,加楼主好友哦

也可以扫第二个二维码,关注楼主个人微信公众号。这里有很多生活,职业,技术相关的文章哦。欢迎您的到来。

微信号:                                             公众号



你可能感兴趣的:(swift学习)