iOS开发学习笔记——表格自定义单元格(UITableViewCll)
来源:互联网 发布:百知java培训 编辑:程序博客网 时间:2024/04/28 17:43
自定义表格单元格(Cell)操作
一、 使用NIb文件自定义单元格(Cell)
1、 创建UITableViewCell的子类,创建的同时记得选择生成xib文件(当然你也可以将控件通过代码的方式添加上去)。
2、 打开生成的xib文件中添加控件和设置布局约束。
3、 需要将Nib文件的控件与cell类关联起来,这样才可以把数据放在控件上显示。
4、 使用的时候在tableView的cell类型设置为1创建的类。
二、 将cell添加到TableView上。
1、 创建UITableViewController的子类。
2、 处理好数据源,放在数组中。
4、 向表格中注册cell,调用tableView的registerXXX方法。
3、 实现表格的委任代理和数据源代理。
a、 设置多少section
b、 设置每个section的行数
c、 获取、配置和显示每个单元格的数据(获得单元格的使用注意【易错点】dequeueReusableCellWithIdentifier函数的参数必须与IB中自定义的Cell的Identifier一致)
4、 将视图的Cell类型与子类关联起来(选中TabelViewController视图下的cell模块,点击属性,在类文本框中选择1创建的子类)
三、 三种设置Cell的高度的办法。
方法1:通过设置属性rowHeight统一行高
方法2:动态设置(高度不一定一致)
实现tablevie的heightForRowAtIndexPath方法
方法3: (适合显示不同内容大小的单元格,如笑话百科)与约束配合的自动计算self Sizing cell,在viewDidLoad下添加代码 self.tableView.estimatedRowHeight=控件默认值(随意);
self.tableView.rowHeight=UITableViewAutomaticDimension;//重点
如果使用3,在自定义cell时不能设置其绝对高度,以及cell中的控件不能太固定化(如,添加文本框时,行数取消掉)
官网文档:传送门
四、如何设置cell的frame、bound和透明度?
通过继承cell,在cell的子类中重构setFrame方法可以调整cell的frame、bound和透明度(默认是无法直接更改的)
通过继承cell,在cell的子类中重构setFrame方法可以调整cell的frame、bound和透明度(默认是无法直接更改的)
五、自定义单元格使用实例:
1.新建工程,新建文件,选择cocoaTouchClass,在第二个输入框(根类)输入tableViewCell,再在第一个输入框输入自己对自定义cell的命名(注意首字母大写)
勾选下面的同时产生xib文件复选框,如下图:
2打开刚刚产生的文件的后缀名为.xib的文件,在自定义的cel中添加需要的控件和约束,之后一定要在右边的属性identifier添加名字否则会失败,如下图的3
3.打开辅助编辑模式,将xib文件中的控件都映射到.swift文件中(control+拖拽)。如下图
4.在需要使用的表格视图的控制器中写入如下代码
import UIKitclass ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {//添加表格协议 @IBOutlet weak var tableView: UITableView!//映射自己的UITableView var data = ["用户1","用户2","用户3"]//数据源准备 override func viewDidLoad() { super.viewDidLoad()//1.设置表格协议代理 tableView.delegate = self tableView.dataSource = self//2.【重点】在表格中注册nib文件 self.tableView.registerNib(UINib(nibName: "TableViewCell",bundle: nil), forCellReuseIdentifier: "testCell") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() }//设置表格的模块 func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 }//每个模块的行数 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return data.count }//对每行都实行数据填入 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {//【重点】定义一个重复使用的cell(一般使用常量)注意后面函数的参数名与xib文件中的identfier一致 ,还需要转化为相应的自定义cell类型。 let cell:TableViewCell = self.tableView.dequeueReusableCellWithIdentifier("testCell") as! TableViewCell cell.name.text = data[indexPath.row] cell.num.text = "\(indexPath.row+1)" return cell }}
5.效果截图如下
注:本demo使用swift2.0版本,xcode版本:7.3
有可能发生的错误:
1.invalid nib registered for identifier (cell2) - nib must contain exactly one top level object which must be a UITableViewCell instance
这个错误是注册不合法,有可能的原因是:你相应的xib文件中有多了一个控件实例。。
解决:把多的那个删除就好了。
- iOS开发学习笔记——表格自定义单元格(UITableViewCll)
- iOS学习笔记-030.UITableView——自定义单元格UITableViewCell
- iOS开发学习笔记——表格1(UITableView)
- IOS学习之——表视图3 自定义单元格
- IOS 自定义导航栏 和表格 学习笔记
- Ext学习笔记——grid表格渲染自定义样式
- 《iOS开发笔记—自定义UIAlertController》
- iOS开发那些事--自定义单元格实现
- IOS开发单元格自定义方法之一
- IOS学习之——静态单元格
- <学习html>第五天笔记-表格table(创建表格、表格属性、表头标签、表格结构、表格标题标签、合并单元格)
- ios开发之设置表格单元格交替背景
- IOS 学习记录 表格单元格放入缓存池
- swift开发笔记6 - 在表格单元格中添加按钮
- 表格:自定义单元格;替换、颜色
- IOS第二十三天——自定义一个UITableViewCell单元格
- 使用 UITableView 创建表格应用演练(4)——自定义单元格
- iOS 自定义单元格
- android layout,measure,draw资料收集
- java事务学习笔记(八)--分布式事务入门例子(Spring+JTA+Atomikos+Hibernate+JMS)
- GCD 小结
- 母牛的故事
- js史上最简单的数组合并去重排序
- iOS开发学习笔记——表格自定义单元格(UITableViewCll)
- Android视图状态及重绘流程分析,带你一步步深入了解View(三)
- hdu 4417 树状数组离线处理
- C#日期格式的转换方法
- web 复位<select>标签 jQuery用法
- Fighting_小银考呀考不过四级
- HDU 5652 图论之并查集
- 事件监听器----画圆
- Java学习笔记-Struts2工作机制