• 视图篇——表格视图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来实现。 

  • 相关阅读:
    node.js基础
    JQuery Ajax实例
    数组的模3特性
    浅析Java抽象类和接口的比较
    乐于分享是促进程序员进步非常重要的一个关键点【转载】
    网络图片的加载
    听一下牛人是怎样自学MIT计算机系全部课程的[转]
    我们为什么活着?别在20岁的时候过40岁的生活【转】
    根据字体多少使UILabel自动调节尺寸
    一个博士生学位论文致谢部分
  • 原文地址:https://www.cnblogs.com/cpcpc/p/2548962.html
Copyright © 2020-2023  润新知