表视图的文档翻译

   UITableView是一种显示、编辑具有层次结构的信息表的有效方法。
   表视图在一个单独的卷里展示一个元素表。表视图是滚动视图的子类,允许在表中滚动 ,但是只允许垂直滚动。
表视图中的格子是由UITableViewCell对象来配置的,表视图使用这些对象来绘制表中每一行的可见部分。格子的内容有标题和图片,另外在右边缘可以有一个配件视图。标准的配件视图是一个信息指示器,或者是一个导向更多细节的按钮。配件视图也可以是框架中的控制器,例如选择器或者滑竿,也可以定制一个。表视图提供了编辑模式,用户可以在此模式插入、删除、重排表的行。
   表视图由若干个节构成,每一个节都有若干行。在表视图中通过索引数字指定节,而在节中通过设定索引数字指定行。每一个节都可以选择性的设置一个节头(section header)和一个节尾(section footer)。

   表视图有两种不同的样式,UITableViewStylePlain和UITableViewStyleGrouped。创建表视图时必须指定样式,并且不能再更改。在平样式中,当一个节的一部分可见时,节头和节尾浮动在内容之外。 表视图的右边可以设置一个条状索引(“A”到“Z”)。可以通过点击特定的label跳到指定的目标节。表视图的组样式提为每一个格子设置了一个默认背景色和默认的背景视图。在一个特定的节中,背景视图把所有格子约束在一个组的样式中。一个组可以用来放用户的名字和简介,另一个组放电话号码,再一个组放电子邮箱。表视图的组样式不能设置索引。

   UITableView的大部分方法都使用一个NSIndexPath对象的参数或返回值。表视图在NSIndexPath类下创建了一个类目,用于获得当前的行数和节数,以及一个通过行数和节数返回NSIndexPath对象的方法(indexPathForRow:inSection:)。尤其是有多个节的时候,需要先求得节数,然后通过行数确定一个格子。
   
  每个表视图都必须有一个数据源以及一个代理。一般来说都指定为应用代理或者定制的表视图控制器。数据源要遵循UITableViewDataSource协议,代理对象要遵循UITableViewDelegate协议。数据源提供了用于构造表的数据,和管理数据模型的信息。代理管理表中行的配置、选择、行重排、高亮、配件视图、编辑操作。

  当调用setEditing:animated:方法时,表视图进入编辑模式,然后可以进行编辑、重排每个可见的行。编译模式基于每一个UITableViewCell的editingStyle。点击插入或删除控制会调用数据源的tableView:commitEditingStyle:forRowAtIndexPath: ,调用deleteRowsAtIndexPaths:withRowAnimation:  或者 insertRowsAtIndexPaths:withRowAnimation: 结束编辑状态。在编辑状态,如果一个cell的showsReorderControl属性设置为YES,数据源的tableView:moveRowAtIndexPath:toIndexPath:方法被调用。数据源通过重写tableView:canMoveRowAtIndexPath:实现对重排的控制。

  表视图缓存了每一表视图格子。可以通过定制UITableViewCell来实现不同于默认格子的样式。
  表视图重写了UIView的layoutSubviews方法,所以只有当创建一个新的表视图或者当指定一个新的数据源的时候reloadData方法才会被调用。重载表视图会清空当前状态,包括当前节。如果明确的调用了reloadData方法,会清掉当前状态,任何其后的直接或间接调用layoutSubviews不会触发重载。

状态保存:
     在iOS6以后,如果表视图的restorationIdentifier属性被设置,表视图就会试图保存当前被选择的行记忆第一个可见的行。表视图的数据源可以通过接受UIDataSourceModelAssociation协议,来直接获取一个行的内容,而不必知道这行在表中的位置。数据源可以控制是否保存已选择的行以及第一可见行。在回复时,数据源需要从识别符中回复被选择行以及第一可见行的index path。如果不实现这个方法,表视图就会默认的存储滚动位置,并恢复。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值