自定义UITableViewCell在init *中设置所有内容或使用属性

时间:2013-05-20 11:46:06

标签: iphone ios cocoa-touch uitableview

我想知道使用自定义UITableViewCell时最好的方法/设计是什么。

我正在做的一种方法是使用一个init来获取设置UITableViewCell所需的所有参数。与-initWithLabel:groups:error

一样

然后我会像CustomUITableViewCell *cell = [CustomUITableViewCell alloc] initWithLabel:@"Hello" groups:@[@"1", @"2", @"3"] error:NO];

一样初始化它

然后可能稍后如果我需要将CustomUITableViewCell的错误更新为YES,我只需重新加载CustomUITableViewCell的单元格并在init中提供YES。

现在我想知道为单元格设置一个setter是否“更好”,比如- (void)setError:(BOOL)error我可以在需要更新单元格的错误时设置而不是重装整个细胞。

比较这两个选项的优缺点是什么?

2 个答案:

答案 0 :(得分:1)

您的首选似乎不是一个好方法。如果你每次创建细胞就好了。但实际发生的是表视图只会创建10-15个单元格(取决于),之后它们将被重用。所以初始化不会执行,除非你在外部调用它(这是不好的)。

因此,自定义单元格中的好方法是使用属性并公开将在数据源对象的cellForRow中更改的所有内容。如果外部类可以访问,请将标签,错误...作为属性。因此您可以轻松更改任何值。

答案 1 :(得分:0)

如果你有一个可以改变的成员变量,那么肯定它应该使用一个setter(并且是一个属性),所以你不必每次都替换这个类。源代码将更清晰,程序将更有效。如果您认为鼓励客户在创建新对象时明确设置该变量,那么您也可以将它包含在init中。