【发布时间】:2012-02-27 05:33:50
【问题描述】:
我一直在玩 UITableViewController 中的自定义单元格,有一个基本单元格(BaseCell - UITableViewCell 的子类),然后是 BaseCell 的子类(Sub1Cell,Sub2Cell,BaseCell 的两个子类)。
因为子类共享一些相同的功能,如果我将它们完全设置在
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
我开始为每种细胞类型重复代码。将通用设置代码放在实际的自定义 UITableViewCell 类中是否有一个好地方,并且是一个好习惯吗?目前我已经写了一个简单的设置方法:
- (void)setupCell
{
self.picture.layer.cornerRadius = 5.0f;
self.picture.layer.masksToBounds = YES;
self.picture.layer.borderColor = [[UIColor lightGrayColor] CGColor];
self.picture.layer.borderWidth = 1.0f;
}
创建单元格后,我一直在调用它:
Sub1Cell *cell = [tableView dequeueReusableCellWithIdentifier:statusCellIdentifier];
[cell setupCell];
有没有可以自动调用的方法?我尝试了 -(void) prepareForReuse,但显然不是每次都调用它,只有在重用单元格时才调用它。
对解决此问题的最佳方法有什么建议吗?
编辑:
似乎每次我打电话给tableView:cellForRowAtIndexPath时都会被调用。我对创建自定义单元格的正确方法有点困惑。我是否应该按照以下方式做一些事情:
Sub1Cell *cell = [tableview dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell = [[Sub1Cell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
[cell setupCell];
}
如果我对传递的样式不做任何事情,它会影响我的自定义单元格吗?
【问题讨论】:
-
您是在为单元格使用故事板(动态原型)或单独的 xib 文件,还是在代码中添加所有内容?
-
一个带有动态原型的故事板,用于布置诸如 UILabel 和 UIImageViews 之类的东西,然后在代码中设置内容和其他设置。这是 iOS 5 的最佳方法吗?
-
是的,完美。我已经在下面回答了。
标签: ios uitableview