UITableViewController详解
UITableViewController表格视图控制器
继承⾃UIViewController类,极⼤地简化了创建UITableViewController类继承⾃
UITableView的过程。
UITableViewController负责处理表格布局,并使⽤⼀个UITableView实例对其进⾏填
充。
可设置此控制器的窗体以⽀持任意导航栏或⼯具栏。可以通过tableView实例变量访
问表格视图。
重要提⽰:⼿⼯代码创建UITableViewController的⼦类时,如果定义
如果定义loadView⽅法,则确保重要提⽰:
调⽤其超类的实现[super loadView]。只有这样才能保证表格视图的正确设置以及在⼦类中添加定制功能。若是使⽤IB创建UITableViewController,则不必向loadView添加任何调⽤。UITableView表格视图实例
数据源⽅法(setDataSource)
UITableView实例依赖外部资源按需为新表格单元格或现有表格单元格提供内容。这种外部源即为数据源。要显⽰表格,每个数据源都必须实现以下3个核⼼⽅法(其定义了表格结构并提供内
视图必须实现这三个核⼼⽅法:
容)。即每个具体UITableView视图必须实现这三个核⼼⽅法
numberOfSectionsInTableView 返回有多少个分段。可以实现是分段显⽰或者单个
列表显⽰具体数据。
tableView:numberOfRowsInSection返回对应的分段有多少个元素,即有多少⾏。
tableView:cellForRowAtIndexPath返回指定的⾏的单元格cell。
注:每个返回的cell类型,都有textLabel、detailTextLabel、imageView、
accessoryType四个常⽤的个性化cell元素的属性。
注意:数据源根据索引路径提供表格单元格。索引路径是NSIndexPath类的对象,描述通过数据树到达特定节点的路径,即它们的分段(section)和它们的⾏(row)。UITableView实例使⽤索引路径指定分段section及其中的⾏row,使⽤表格的dataSource属性为表格指定⼀个对象作为其数据源,且该对象必须实现UITableViewDataSourece协议。
数据源被指定后,通过实现tableView:cellForRowAtIndexPath:⽅法来加载表格及其单元格。通过调⽤表格的reloadData⽅法,表格开始查询其数据源加载内容。
指定委托(setDelegate)
UITableView实例使⽤委托是为了响应⽤户的交互动作。委托告知表格将响应这些交互的责任移交给指定对象。这个指定的对象通常是拥有表格视图的UITableViewController控制器对象。当然该委托必须实现UITableViewDelegate协议。其委托⽅法基本上定制表格结构的:tableView:heightForRowAtIndexPath返回指定的row的⾼度。
tableView:heightForHeaderInSection返回指定分段的header view区域的⾼度。
tableView:heigthForFooterInSection返回指定分段的footer view区域的⾼度。
t ableView:titleForHeaderInSection返回指定分段的header的title,如果这个section
header有返回view,那么title就不起作⽤。
tableView:viewForHeaderInSection返回指定分段的header的view,若没有,则可
以不返回view。
tableView:didSelectRowAtIndexPath当⽤户选中某个⾏的cell的时候,回调⽤这
个。前提是必须设置tableView的⼀个allowsSelection属性为YES才⾏。
tableView:accessoryButtonTappedForRowWithIndexPath响应⽤户点击cell右边
的箭头事件。
tableView:commitEditingStyle: editingStyleforRowAtIndexPath通知⽤户编辑了
哪个cell。
因此,通过以上理解,我们知道UITableView实例初始化必须设置setDataSource和
表视图从遵循UITableViewDelegate协议setDelegate属性,分别指定数据源与委托对象。表视图从遵循
协议的对象获得⾏数据。数据源提的对象获取配置数据,从遵循UITableViewDataSource协议的对象获得⾏数据
供了绘制所需要的所有数据;委托则只是⽤于配置表视图的外观并处理某些⽤户交互。代码⽰例:
UITableView *tableview = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)]; [tableview
setDelegate:self]; [tableview setDataSource:self]; [self.view addSubview: tableview]; [tableview release];
说明:除了委托⽅法调⽤,UITableView实例还提供了通知。通知使⽤默认NSNotificationCenter⼴播更新,让应⽤程序的不同线程之间可以彼此交流。3.0 SDK中唯⼀的官⽅表格通知是UITableViewSelectionDidChangeNotification。
其实UITableView类继承⾃UIScrollView,是个特殊的ScrollView,这个滚动控件⾥主要封装了UITableViewCell单元格控件。默认状态下,所有UITableViewController实例都被⾃动设为UIScrollView委托。
1. UITableView视图通过tableView属性访问。view ui框架
2. ⼏乎任何字符串数组都可以⽤于设置和填充表格。
3. 要显⽰表格,必须实现numberOfSectionsInTableView、numberOfRowsInSection、cellForRowAtIndexPath这3个核⼼⽅法来定义表格皆结构,并提供内容显⽰。
4. “可重⽤单元格”是表格视图节省内存使⽤的⾼效⽅式,对于不同种类的单元格应该使⽤不同的ID标识符。
5. 在分配新单元格时,必须检查重⽤单元格是否可⽤。(即检
查dequeueReusableCellWithIdentifier:请求的返回值)
6. 当⽤户选中某个⾏的cell的时候,回调⽅法tableView:didSelectRowAtIndexPath:被触发。
7. 关于表格的样式有两种风格的表视图:UITableViewStylePlain(按索引排序显
⽰)、UITableViewStyleGrouped(按组进⾏分类显⽰)。
8. 选定单元格的颜⾊设置有:UITableViewCellSelectionStyleBlue、UITableViewCellSelectionStyleGray、UITableViewCellSelectionStyleNone三种值。
9. 基本表格视图单元格类型:UITableViewCellStyleDefault、UITableViewCellStyleSubtitle、UITableViewCellStyleValue1、UITableViewCellStyleValue2四种类型。
10. ⼀般,我们所谓⾃定义表视图其实是直接⾃定义表⾏数据的显⽰布局,即通过⾃定义UITableViewCell单元格。⽅法⽆外乎,要么直接向UITableViewCell添加⼦视图,要么是⼦类化UITableViewCell来实现。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。