我想从已弃用的 initWithFrame:reuseIdentifier:
更新我的 TableView。
我的表格 View 使用自定义单元格。
到处都说要使用 initWithStyle:
,并且它不会以任何方式改变 initWithFrame:CGRectZero reuseIdentifier:
的行为或单元格。
但是当我使用 initWithStyle:UITableViewCellStyleDefault reuseIdentifier:
构建时,单元格变为空白(即我们的自定义单元格不起作用(因为它是用某种样式初始化的?))。
单元格初始化后(如果它没有出队),我们在单元格上设置文本。但是当我使用 initWithStyle:reuseIdentifier:
时,这些都没有设置,但它适用于 initWithFrame:CGRectZero
。除了使用的 init 方法 (initWithStyle
) 之外,没有任何代码发生变化。
这些行在单元格创建(或重用)后放入:
cell.newsItemNameLabel.text = @"test";
NSLog(@"NewsItemName: %@",cell.newsItemNameLabel.text);
“NewsItemName: (null)”中的结果
有人有想法吗?两者之间的真正区别是什么?
谢谢
最佳答案
cellForRowAtIndexPath
的实现应类似于以下内容:
- (CustomCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CellIdentifier";
CustomCell *cell = (CustomCell *)(UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Configure the cell.
cell.textLabel.text = NSLocalizedString(@"Detail", @"Detail");
return cell;
}
其中 CustomCell
是自定义单元格类的名称。请注意,此实现使用 ARC(自动引用计数)。如果您不碰巧使用此功能,请将 autorelease
调用添加到您的单元格分配中。
CustomCell
的 initWithStyle
实现:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
//do things
}
return self;
}
关于iphone - initWithFrame 与 initWithStyle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9380710/