视图篇——表格视图UITableView及控制器UITableViewController

(来自http://www.cnblogs.com/lovecode/articles/2238309.html)

UITableViewController表格视图控制器

  • UITableViewController类继承自UIViewController类,极大地简化了创建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区域的高度。
  • tableView: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和setDelegate属性,分别指定数据源与委托对象表视图从遵循UITableViewDelegate协议的对象获取配置数据,从遵循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属性访问。
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来实现。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值