使用新的UITableViewCells重新加载UITableView

时间:2012-06-29 01:50:22

标签: ios uitableview

通常使用reloaddata函数只重新加载表中的数据,但如果我想更改为不同类型的UITableViewCell会怎样?

基本上我喜欢动态调用

 -(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath

允许加载不同类型的单元格。

3 个答案:

答案 0 :(得分:0)

您是否尝试过设置NSString属性,然后将其用作dequeueReusableCellWithIdentifier:参数。然后调用reloadData可能会换出单元格吗?

我自己没试过 - 只是一个想法。

答案 1 :(得分:0)

尝试

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

并传入要重新加载的索引数组。它将为您调用cellForRowAtIndexPath回调。

答案 2 :(得分:0)

为不同的细胞类型定义typedef:

typedef enum {
    kTableCellType1,
    kTableCellType2
} TableCellType;

然后,定义一个使用新的TableCellType的类实例变量,例如

@interface MyTableViewController ()
{
    TableCellType _tableCellType;
}
@end

viewDidLoad中,初始化此ivar:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // do all of your other initialization

    _tableCellType = kTableCellType1;
}

然后,您的cellForRowAtIndexPath可以查看要使用的单元格类型:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (_tableCellType == kTableCellType1)
    {
        // build first table cell type
    }
    else if (_tableCellType == kTableCellType2)
    {
        // build the other table cell type
    }
}

最后,当您想要更改单元格时,可以更改ivar,然后重新加载数据:

_tableCellType = kTableCellType2;
[self.tableView reloadData]; // or reloadRowsAtIndexPaths or reloadSections