IOS-TableView Cell:dequeueReusableCellWithIdentifier问题

时间:2014-10-12 14:47:53

标签: ios objective-c uitableview ios8


在我的项目中,我通过代码创建所有内容,例如tableviews和cells。我有添加细胞的功能。 情况是:我的数组中有10个对象,当程序运行时,函数(- (TodoTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath)在滚动时遍历所有10个单元格,它在单元类中运行10次init ...函数。但是,当我在程序中添加一个新单元格时,我发现这个新单元格由于某种原因从不调用init函数。 (细胞正在成功创建,虽然......很奇怪)

我使用这部分添加单元格:

    [self.tableView beginUpdates];
    [self.todoItemList insertObject:newItem atIndex:toBeAddedIndex];
    [self.tableView insertSections: [NSIndexSet indexSetWithIndex:toBeAddedIndex] withRowAnimation:UITableViewRowAnimationNone];
    [self.tableView endUpdates];

并在此功能中:

- (TodoTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Scroll to %ld", indexPath.section);
static NSString *cellIdentifier = @"TodoCell";

TodoTableViewCell *cell = (TodoTableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];

//If the current cell is dummycell, make it transparent
cell.todoItem = (TodoItem *)(self.todoItemList[indexPath.section]);

我不知道为什么,有人请帮助

---------- UPDATE -----------------

NSString *cellIdentifier = [NSString stringWithFormat:@"TodoCell%ld",indexPath.section];

我发现如果我换到这一行。每次添加一个新单元格时,它只调用init函数!但是......如果我先删除然后添加,问题仍然存在,因为我已经创建并使用和存储了这个标识符。

1 个答案:

答案 0 :(得分:1)

尝试致电:

[self.tableView insertRowsAtIndexPaths:<#(NSArray *)#> withRowAnimation:<#(UITableViewRowAnimation)#>]