我正在尝试保存自定义单元格对象,然后再显示它们。但完全没有理解我所拥有的机制:
- (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接口,但无法获得变量解码。我应该怎么做才能使这项工作?
答案 0 :(得分:0)
我想我能看出你的问题。 不过,你不应该自己保存细胞。只需创建一个UITableViewCell-Subclass,它接受一个对象,从中收集它的所有内容。如果你需要不止一个课程,那也没关系。您可以轻松地为多个用例创建多个子类。 然后只需保存数据对象并在需要时重新创建单元格。 这样做的原因是你的方式会产生巨大的开销,因为你试图保存组成你的单元格的所有UI视图,Lables等。此外,UITableVIews经过高度优化,并尝试重复使用与您的方法不相符的现有单元格。
TL; DR: 您需要可以保存在keyedArchivers中的数据对象,并且需要接受这些对象并显示必要数据的tableviewcells。说真的,你会省去一些麻烦。如果您需要帮助并享受乐趣,请告诉我