static cell 与 dynamic cell 混合使用
在某些界面中static cell与dynamic cell混合使用会事半功倍,比如手机上的Wi-Fi
功能等,效果图如下:
Wi-Fi
界面的第一组与第三组的行数都是固定的,且布局并不相同,类似这样的布局使用static cell很快就可以完成,然而第二组却需要使用dynamic cell。这时候就会用到静态cell与动态cell混合使用的情况。
首先,在Storyboard中添加一个UITableViewController,设置为Static cell,并设置好第一组与第三组的内容,第二组需要设置一个空的Cell,如图:
然后,给第二组的空白Cell设置identifier值,如图:
然后,第二组需要自定义cell,这里使用XIB来完成,如图:
接下来需要用代码注册Nib,如下:
1 let nib = UINib(nibName: "WiFiTableViewCell", bundle: nil) 2 tableView.registerNib(nib, forCellReuseIdentifier: "WiFiTableViewCell")
最后,为了让 static cell 与 dynamic cell 能够混合使用,需要实现TableView的代理,代码如下:
1 // 以下代理方法必须实现 2 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 3 if indexPath.section == 1 { 4 let cell = tableView.dequeueReusableCellWithIdentifier("WiFiTableViewCell") as? WiFiTableViewCell 5 return cell! 6 } 7 return super.tableView(tableView, cellForRowAtIndexPath: indexPath) 8 } 9 10 override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 11 if section == 1 { 12 return 10 //这里返回第二组的行数 13 } 14 return super.tableView(tableView, numberOfRowsInSection: section) 15 } 16 17 override func tableView(tableView: UITableView, indentationLevelForRowAtIndexPath indexPath: NSIndexPath) -> Int { 18 if indexPath.section == 1 { 19 return super.tableView(tableView, indentationLevelForRowAtIndexPath: NSIndexPath(forRow: 0, inSection: 1)) 20 } 21 return super.tableView(tableView, indentationLevelForRowAtIndexPath: indexPath) 22 } 23 24 override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 25 if indexPath.section == 1 { 26 return 44 27 } 28 return super.tableView(tableView, heightForRowAtIndexPath: indexPath) 29 }
值得注意的是:
- 在storyboard中需要给第二组设置一行空的Cell,并设置identifier值。
- 在代码中也需要注册Cell
- 上面提到的代理方法必须实现
最后,本文主要是记录关于 static cell 与 dynamic cell 的混合使用,因此很多细节问题并没有处理,更多关于static cell另外的一些使用,可以点击这里【更优雅地使用Static Cell】
文/Chakery(简书作者)
原文链接:http://www.jianshu.com/p/c3645c13af4b
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
原文链接:http://www.jianshu.com/p/c3645c13af4b
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。