通常使用reloaddata函数只重新加载表中的数据,但如果我想更改为不同类型的UITableViewCell会怎样?
基本上我喜欢动态调用
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
允许加载不同类型的单元格。
答案 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