Ios 带编码器的TableCell init和带样式的init
我正在尝试保存自定义单元格对象,稍后再显示它们。但我无法完全理解其机制:Ios 带编码器的TableCell init和带样式的init,ios,objective-c,cocoa-touch,Ios,Objective C,Cocoa Touch,我正在尝试保存自定义单元格对象,稍后再显示它们。但我无法完全理解其机制: - (id)initWithCoder:(NSCoder *)decoder { if((self = [super init])) { self.action = [decoder decodeObjectForKey:@"action"]; } return self; } 及 这样我可以解码变量,但tablecell根本不显示。若我用编码器删除init,我会显示我的table
- (id)initWithCoder:(NSCoder *)decoder {
if((self = [super init])) {
self.action = [decoder decodeObjectForKey:@"action"];
}
return self;
}
及
这样我可以解码变量,但tablecell根本不显示。若我用编码器删除init,我会显示我的tablecell接口,但无法解码变量。我该怎么做才能让它工作 我想我能看出你的问题。 不过,你不应该保存细胞本身。只需创建一个UITableViewCell子类,该子类接受一个对象,并从中收集其所有内容。如果你需要不止一门课,那也没关系。您可以轻松地为几个用例创建几个子类。 然后只需保存数据对象,并在需要时重新创建单元格。 这样做的原因是,您的方式会产生巨大的开销,因为您试图保存组成单元的所有UIView、标签等。此外,UITableView经过了高度优化,并尝试重用与您的方法不匹配的现有单元 TL;博士:
您需要可以保存在keyedArchivers中的dataobjects,还需要接受这些对象并显示必要数据的TableViewCell。说真的,你会省下一些麻烦的。如果您需要帮助并玩得开心,请告诉我通常您不想保存tableViewCells。您可能希望保存单元格的内容,然后重新创建单元格并用内容填充。如果您的储存方式是有意的,请解释为什么要这样做。这将帮助我们找到答案。嗯,这些单元格是高度定制的,取决于它们需要显示的数据。所以我认为最好是用自定义变量创建和保存单元格。我想你的答案是有道理的。我得重新考虑我的逻辑,谢谢
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
}
return self;
}