如何重构UITableViewCell配置代码?

时间:2013-08-26 22:51:44

标签: ios objective-c uitableview

我有一个带有单个自定义表格视图单元格的tableview,随着时间的推移,这会导致一个有点复杂的结构,我希望简化和改进它。基本上在当前形式中,在单元格的左侧和右侧有图像和按钮,并且在中间可能有两个不同的标签。

单元格是根据它们所代表的条目,表格视图的部分和tableview的状态进行配置的,因此cellForRowAtIndexPath和willDisplayCell中的代码都变得非常混乱。配置包括隐藏/取消隐藏非标签子视图以及可能更改UILabel的帧。

您如何建议构建和改进此类代码?何时开始使用不同的自定义单元类?

1 个答案:

答案 0 :(得分:1)

我会为您拥有的每种条目类型创建自定义子类。在每个单元子类上创建一个名为

的方法
-(void)configureCell:(Entry *)entry
{
   //do configuration stuff here
}

然后在你的cellForRowAtIndexPath中,执行以下操作:

Entry *entry = self.entryArray[indexPath.row];
UITableViewCell *cell;
switch( entry.entryType )
{
    case EntryTypeOne:
        CellTypeOne *cCell = (CellTypeOne *)[tableView dequeueReusableCellWithIdentifier:@"CellTypeOne" forIndexPath:indexPath 
        [cCell configureCell:entry];
        cell = cCell;
        break; 
    case EntryTypeTwo:
        CellTypeTwo *cCell = (CellTypeTwo *)[tableView dequeueReusableCellWithIdentifier:@"CellTypeTwo" forIndexPath:indexPath 
        [cCell configureCell:entry];
        cell = cCell;
        break;   
}

return cCell;

只是一些想法,因为我实际上并不知道如何设置代码或如何区分条目类型。