【发布时间】:2012-10-21 21:59:25
【问题描述】:
我正在尝试在 iOS 6 中为UITableView 使用新方法时如何设置UITableViewCellStyle。
以前,在创建 UITableViewCell 时,我会更改 UITableViewCellStyle 枚举以在调用 initWithStyle: 时创建不同类型的默认单元格,但据我所知,情况已不再如此。
UITableView 的 Apple 文档指出:
返回值: 具有关联重用标识符的 UITableViewCell 对象。此方法总是返回一个有效的单元格。
讨论: 出于性能原因,表格视图的数据源在将单元格分配给其 tableView:cellForRowAtIndexPath: 方法中的行时,通常应该重用 UITableViewCell 对象。表视图维护数据源已标记为重用的 UITableViewCell 对象的队列或列表。当被要求为表格视图提供新单元格时,从您的数据源对象调用此方法。如果一个现有单元格可用,此方法会将现有单元格出列,或者根据您之前注册的类或 nib 文件创建一个新单元格。
重要提示:在调用此方法之前,您必须使用 registerNib:forCellReuseIdentifier: 或 registerClass:forCellReuseIdentifier: 方法注册类或 nib 文件。
如果您为指定的标识符注册了一个类并且必须创建一个新单元格,则此方法通过调用其 initWithStyle:reuseIdentifier: 方法来初始化该单元格。对于基于 nib 的单元格,此方法从提供的 nib 文件加载单元格对象。如果现有单元格可供重用,则此方法将调用该单元格的 prepareForReuse 方法。
这是我的新 cellForRowAtIndexPath 在实施新方法后的样子:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"cell_identifier";
[tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:cellIdentifier];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
return cell;
}
到目前为止,我的代码运行良好,但始终返回默认样式。如何更改此设置,以便创建具有其他样式的单元格,例如 UITableViewCellStyleDefault、UITableViewCellStyleValue1、UITableViewCellStyleValue2 和 UITableViewCellStyleSubtitle?
我不想继承 UITableViewCell,我只想更改默认类型,就像在 iOS 6 之前我可以做的那样。Apple 会提供增强的方法但用最少的文档来支持它们的实现,这似乎很奇怪。
有没有人掌握了这个,或者遇到了类似的问题?我正在努力寻找任何合理的信息。
【问题讨论】:
标签: uitableview ios6