注意:下文是本人翻译之后整理的资料
什么是Table View?
Table Views是一种多功能的用户界面对象,在iOS的应用程序中很常见。它将数据以一个滚动的列表形式呈现出来,并且可以把数据分组。
Table Views有很多用途:
- 让用户浏览分层次的有结构的数据
- 展现一个有索引的项目列表
- 显示一些详细信息,然后让每一组数据展示的效果不同
- 提供一个可选项列表
Table View 组成:
一个Table View只有一列,并且只允许纵向滚动。每一组由若干行组成,并且每组可以设置一个头部和足部用来展示文字或图片。但是很多Table Views只有一组,并且不显示头部和足部。从编程角度来讲,UIKit框架是通过一个索引值来识别到底是哪一组的哪一行的:从Table View的顶部到底部,组索引是由0至n-1来编排;行索引是在每一组中由0至n-1来编排。一个Table View可以有它自己的头部和足部,区别于任何一组;Table View的头部出现在第一组第一行之前,足部出现在最后一组最后一行之后。
显然,一个Table View是UITableView这个类的两种基本类型(单一或分组)中实例化的其中一种。一个单一类型的Table View是一个连续的列表;而一个分组类型的Table View拥有明显区别的不同分组。一个Table View拥有一个数据源,并且可能拥有代理。数据源对象提供填充在Table View的组和行中的数据。代理对象则用来个性化它的外观和行为。
关于TableViewCell
一个Table View通过单元格(Cells),也就是UITableViewCell对象来绘制他们可见的行。单元格是一种可以展示文字、图片或其他内容的视图(Views)。它们在正常和选中状态时分别有不同的背景视图。单元格也可以有辅助视图(Accessory Views),用来选择或设置一个选项。
UIKit框架定义了四个标准的单元格样式,每一种样式都拥有固定的三个默认的元素:主标签(main label),细节标签(detail label)和图片(image)。你也可以创建自定义样式的单元格,这样你就可以得到一个在你App的table view中独有的单元格样式了。
静态&动态单元格
当你要在故事板(storyboard)中设置一个Table View的属性时,就需要在两种单元格内容的类型中选择一种,是静态的还是动态的。
静态单元格:用来设计一个具有固定单元格数量的表格,并且每一个单元格都有自己的布局。如果在设计的时候,无论单元格显示什么内容,你都知道单元格的样子,那么可以使用静态单元格。
动态单元格:用动态单元格来设计一个单元格,然后将这个单元格当作其他单元格的模板使用。当一个表格中很多单元格的布局相同时,可以使用动态单元格。无论多少个单元格,它的内容都由数据源在运行时(runtime)中管理。
数据源和代理:
一个UITableView对象必须有一个代理和一个数据源。在MVC(模型-视图-控制器)设计模式下,协调app的数据模型(模型对象)和table view之间关系的就是数据源;数据源提供给table view对象所需要用来构造和修改table view的一些信息。另一方面,代理管理着table view 的外观和行为。数据源和代理经常(但不必须)是同一个对象,这个对象一般是一个自定义的UITableView子类。
数据源遵守UITableViewDataSource协议。这个数据源协议有两个必须实现的方法。tableView:numberOfRowsInSection:方法告诉table view每一组中要展示几行数据,tableView:cellForRowAtIndexPath:方法提供表格中需要展示的单元格。可选的方法允许数据源设置多个组,提供头部和足部,并且支持添加、移除和排序表格中的行。
代理尊许UITableViewDelegate协议,这个协议没有必须实现的方法。它声明了一些方法,来让代理可以修改table view的外观,管理选中项,支持辅助视图和编辑table view的个别行。
很多方法都把NSIndexPath对象作为参数。UITableView在NSIndexPath上声明了一个分类,让你能够得到期望的索引值,或者通过给定的组和行索引构造一个index path(在每一个index path中的第一个索引值代表组索引,第二个代表行索引)。
补充:Table View的代理方法
响应每一行的选中状态:当用户通过轻触选中一个行的时候,table view的代理通过一个消息得到通知。代理接收到选中的行索引以及它所在组的索引之后,用这些信息在app的数据模型中定位相应的项。
在一个有一系列选项的table view中,轻触某一行仅仅选中了它的相关选项,不会有后续视图的数据显示。
在编辑模式下,你可以添加、删除行或对行进行排序。Table Views可以进入到编辑模式,这样用户可以插入或删除行,也可以在表格范围内重新对行进行排序。在编辑模式下,每一行会在左边展示一个绿色的加号标志或者一个红色的减号标志分别表示插入一行和删除一行。如果用户点触碰了删除控制,或在一些table view中手指划过某一行,这是就会出现一个红色的删除按钮,提示点击这个按钮会删除这一行。可以重新排序的行会在该行的右边显示一个由几条横线组成的图标。当table view退出编辑模式,控制插入、删除和重新排序的方式都会消失。
当用户常识去插入、删除或重新排序行时,table view会给它的数据源发送一个序列来让代理能够管理这些操作。
网友评论