TableCell init与coder和init一起使用样式

时间:2013-05-15 12:45:30

标签: ios objective-c cocoa-touch

我正在尝试保存自定义单元格对象,然后再显示它们。但完全没有理解我所拥有的机制:

- (id)initWithCoder:(NSCoder *)decoder {
    if((self = [super init])) {
        self.action = [decoder decodeObjectForKey:@"action"];
    }
    return self;
}

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {

    }
    return self;
}

这样我可以解码变量,但是表格单元格根本没有出现。如果我用编码器删除init我确实得到了我的tablecell接口,但无法获得变量解码。我应该怎么做才能使这项工作?

1 个答案:

答案 0 :(得分:0)

我想我能看出你的问题。 不过,你不应该自己保存细胞。只需创建一个UITableViewCell-Subclass,它接受一个对象,从中收集它的所有内容。如果你需要不止一个课程,那也没关系。您可以轻松地为多个用例创建多个子类。 然后只需保存数据对象并在需要时重新创建单元格。 这样做的原因是你的方式会产生巨大的开销,因为你试图保存组成你的单元格的所有UI视图,Lables等。此外,UITableVIews经过高度优化,并尝试重复使用与您的方法不相符的现有单元格。

TL; DR: 您需要可以保存在keyedArchivers中的数据对象,并且需要接受这些对象并显示必要数据的tableviewcells。说真的,你会省去一些麻烦。如果您需要帮助并享受乐趣,请告诉我