2013-05-15 151 views
0

我想保存自定义单元格对象,并在稍后显示它们。但不明白的机制完全我有:TableCell初始化与编码器和初始化与样式

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

这样,我让我的变量译码但TableCell的不显示在所有。如果我删除与编码器的init我得到我的tablecell接口显示,但不能得到变量解码。我应该怎么做才能做到这一点?

+0

通常,你不想保存tableViewCells。你会想保存单元格的内容,然后重新创建单元格并填充内容。如果您的存储细胞的方式是故意的,请解释您为什么要这样做。它会帮助我们找到答案。 – katzenhut

+0

根据他们需要显示的数据,细胞高度定制。所以我虽然最好创建并保存自定义变量的单元格 – Datenshi

回答

0

我想我可以看到你的问题。 仍然,你不应该保存细胞本身。只需创建一个UITableViewCell-Subclass,它接受一个从中收集所有内容的对象。如果你需要一个以上的课程,那也可以。您可以轻松地为几个用例创建几个子类。 然后只需保存数据对象并在需要时重新创建单元格。 原因是你的方式会产生大量的开销,因为你试图保存组成你的单元格的所有UIviews,Lables等。此外,UITableVIews进行了高度优化,并尝试重用现有的单元格,这与您的方法无法很好地发挥作用。

TL; DR: 您需要dataobjects,您可以将它保存在keyedArchivers中,并且您需要tableviewcells来接受这些对象并显示必要的数据。说真的,你会省下一些麻烦。让我知道如果你需要帮助和乐趣

+0

我想你的答案确实有意义。我必须重新思考我的逻辑,谢谢 – Datenshi