我想知道使用自定义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
我可以在需要更新单元格的错误时设置而不是重装整个细胞。
比较这两个选项的优缺点是什么?
答案 0 :(得分:1)
您的首选似乎不是一个好方法。如果你每次创建细胞就好了。但实际发生的是表视图只会创建10-15个单元格(取决于),之后它们将被重用。所以初始化不会执行,除非你在外部调用它(这是不好的)。
因此,自定义单元格中的好方法是使用属性并公开将在数据源对象的cellForRow
中更改的所有内容。如果外部类可以访问,请将标签,错误...作为属性。因此您可以轻松更改任何值。
答案 1 :(得分:0)
如果你有一个可以改变的成员变量,那么肯定它应该使用一个setter(并且是一个属性),所以你不必每次都替换这个类。源代码将更清晰,程序将更有效。如果您认为鼓励客户在创建新对象时明确设置该变量,那么您也可以将它包含在init中。