在我的项目中,我通过代码创建所有内容,例如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函数!但是......如果我先删除然后添加,问题仍然存在,因为我已经创建并使用和存储了这个标识符。
答案 0 :(得分:1)
尝试致电:
[self.tableView insertRowsAtIndexPaths:<#(NSArray *)#> withRowAnimation:<#(UITableViewRowAnimation)#>]