UITableView
tableView是个一维表,这是一个UIScrollView的子类,所以它是一个滚动列表。它可以高度定制化,它从它的两个不同的delegation中获取所有的定制化信息,有data source和delegate这两个不同的properties,data source负责提供表中的数据,delegate负责数据显示。如果想显示多维数据,就是有行和列,可以使用sections或者可以把它放进一个navigation controller。
描述plain风格的tableVeiw的各个部分的术语:
最顶上的东西叫header,那是一个UIView,可以添加到表中,它可以是任何你想要的东西。在底部有个footer,也是个UIView。这些被分组的东西叫section,蓝条叫section header,可以用字符串设置或者可以用view,表中的每个row都是一个UIView,叫这个UIView为tableVeiw cell。
使用完全相同的术语描述group风格的tableVeiw:
当有section时,建立tableVeiw并实现data source时得告诉tableVeiw有多少section,然后它会问你每个section里有多少row。
data source protocol里都有什么方法?有三个要实现的非常重要的方法,一个是表明表里有多少section,二是每个section有多少row,第三个是返回要绘制的每个row的UITableView cell。
来看最后一个方法,这是该方法的的样子:
- (UITableViewCell *)tableView:(UITableView *)sender cellForRowAtIndexPath:(NSIndexPath *)indexPath
//返回有多少个分段。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)sender;
//返回对应的分段有多少个元素,即有多少行。
- (NSInteger)tableView:(UITableView *)sender numberOfRowsInSection:(NSInteger)section;
UITableViewdelegate控制如何绘制表,不是表中的数据,而是如何显示,比如像cell多高之类。常常data source和delegate是同一个对象,是这个UITableViewController,delegate有很多did/will happen方法,最重要的是它会通知你,当有人点击row的时候。
UITableView实例使用委托是为了响应用户的交互动作 。委托告知表格将响应这些交互的责任移交给指定对象。这个指定的对象通常是拥有表格视图的UITableViewController控制器对象。当然该 委托必须实现UITableViewDelegate协议 。其委托方法基本上定制表格结构的:
因此,通过以上理解,我们知道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来实现。
http://www.cnblogs.com/geory/archive/2013/02/27/2913618.html