Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 带编码器的TableCell init和带样式的init_Ios_Objective C_Cocoa Touch - Fatal编程技术网

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;
}