如何在分组部分uitableview中添加/删除单元格?

时间:2012-09-22 08:46:45

标签: iphone ios uitableview

如何以编程方式添加或删除分组部分中的单元格?

我在故事板中使用静态单元创建了一个分组的tableview。在故事板中,我使用“属性检查器”面板设置行数。例如,对于第1部分,我定义了3行。然后使用3项的NSMutableArray,我可以在启动时正确地将值加载到每个部分。

我最终希望能够在运行时添加/删除单元格。该部分尚未编码,但为了模拟添加新的单元格场景,我在代码中向数组添加了一个新项目,但没有增加“属性”检查器面板中该部分的行数。我曾希望我不需要进行任何其他更改来容纳新项目,因为在numberOfRowsInSection方法中,我将返回特定部分的数组计数。

这是我重新运行代码时收到的错误消息:

*由于未捕获的异常'NSRangeException'而终止应用程序,原因:'* - [__ NSArrayI objectAtIndex:]:索引3超出边界[0 .. 2]'

显然我需要以某种方式指定额外的行数。任何人都可以了解我如何在运行时这样做?谢谢。

3 个答案:

答案 0 :(得分:1)

您不应该通过属性检查器来执行此操作。它禁止你动态插入和删除细胞。 尝试

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [yourArray count];
}

否则这样做。

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    if(section==0){
       return 3;
    }else if(section==1){
       return 4;
    }
 return 0;
}
如果你有很多部分,

等不同部分.. 您可以在更新读取数据的数组时重新加载整个表格。

[tableView reloadData];

但更好的方法是在块中插入这样的行或多行。

[tableView beginUpdates];
[tableView insertRowsAtIndexPaths:yourIndexPath withRowAnimation:UITableViewRowAnimationRight];
[tableView endUpdates];

您还可以添加动画以从右侧或左侧或顶部或底部添加单元格。

我希望这会对你有所帮助!! 干杯!!

答案 1 :(得分:0)

我猜你是硬编码了你的部分的行数。因为查看错误,您的部分似乎期望4个对象,但您的数据源仅包含3.

在你的内心:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

你应该返回类似[myArray count]的内容,所以如果从数组中添加或删除对象,添加或删除行应该不会有问题。

答案 2 :(得分:0)

UITableview中有预定义方法,用于插入和删除行,对于插入,我们可以使用insertRowAtIndexPath方法,删除时使用deleteRowAtIndexPath方法。