我想从不推荐的initWithFrame:reuseIdentifier:更新我的tableview。
我的TabLVIEW使用自定义单元格。
它说要在任何地方使用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;
}

08-26 04:02