2013-05-15 152 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