我试图解决如何在iOS 6中使用UITableView
的新方法时设置UITableViewCellStyle
。使用iOS 6时UITableViewCell的设置风格UITableView dequeueReusableCellWithIdentifier:forIndexPath:
以前,在创建UITableViewCell
时,我会更改UITableViewCellStyle
枚举,以在调用initWithStyle:
时创建不同类型的默认单元格,但从我可以收集的内容中,不再是这种情况。
苹果文档UITableView
规定:
返回值: 与相关联的重用标识符一个UITableViewCell对象。此方法始终返回有效的单元格。
讨论: 出于性能原因,一个表视图的数据源通常应该重用的UITableViewCell对象时将其分配细胞在其的tableView行:的cellForRowAtIndexPath:方法。表视图维护数据源标记为可重用的UITableViewCell对象的队列或列表。当被要求提供表格视图的新单元格时,从数据源对象调用此方法。此方法将取出现有单元格(如果有),或根据您之前注册的类或nib文件创建新单元格。
重要:调用此方法之前的方法:你必须注册使用registerNib类或笔尖文件:forCellReuseIdentifier:或的registerClass:forCellReuseIdentifier。
如果您为指定的标识符注册了一个类并且必须创建一个新的单元格,则此方法通过调用其initWithStyle:reuseIdentifier方法来初始化该单元格。对于基于笔尖的单元格,此方法从提供的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之前做。看起来很奇怪的是,苹果会提供增强的方法,但用最少的文档来支持它们的实现。
有没有人掌握了这个,或遇到类似的问题?我努力寻找任何合理的信息。
我开始认为这确实是这种情况。这不是一个主要的问题,但不得不继承'UITableViewCell'以获得其他默认样式是一件很痛苦的事情,因为它只会产生不必要的文件。感谢您的评论并确认我的怀疑。 – CaptainRedmuff
不要忘记,而不是子类化,你可以使用旧的iOS5方法,这仍然有效。这样你可以初始化你想要的任何类型的单元格样式。见另一个答案。 – SpacyRicochet