2013-05-20 27 views
0

我想知道什麼是使用自定義UITableViewCell時的最佳方法/設計。自定義UITableViewCell在init *中設置所有內容或使用屬性

我正在做的一種方法是使用所需的所有參數來設置UITableViewCell。像-initWithLabel:groups:error

那我就初始化它像CustomUITableViewCell *cell = [CustomUITableViewCell alloc] initWithLabel:@"Hello" groups:@[@"1", @"2", @"3"] error:NO];

那麼也許以後如果我需要的CustomUITableViewCell的錯誤更新爲YES,我只想重新加載電池的CustomUITableViewCell,並在init供應YES。

現在我知道這將是「更好」有一個二傳手的細胞,就像- (void)setError:(BOOL)error我可以設置每當我需要更新單元重新加載整個細胞,而不是的錯誤。

比較兩個選項有什麼優點/缺點?

回答

1

你的第一個選擇似乎不是一個好方法。如果你每次創建單元格都很好。但實際發生的是表視圖將只創建10-15個單元格(取決於),之後它們將被重用。所以初始化不會執行,除非你在外部調用它(這是不好的)。

因此,自定義單元格中的好方法是使用屬性並公開將在數據源對象的cellForRow中更改的所有內容。如果可以通過外部類訪問,請將標籤,錯誤...作爲屬性。所以你可以很容易地改變任何值。

0

如果你有一個可以改變的成員變量,那麼肯定它應該使用setter(並且是一個屬性),所以你不必每次都替換這個類。源代碼將更清晰,程序將更加高​​效。如果您認爲鼓勵客戶在創建新對象時明確設置該變量是一個好主意,那麼您也可以將其包含在init中。

相關問題