如何以编程方式添加或删除分组部分中的单元格?
我在故事板中使用静态单元创建了一个分组的tableview。在故事板中,我使用“属性检查器”面板设置行数。例如,对于第1部分,我定义了3行。然后使用3项的NSMutableArray,我可以在启动时正确地将值加载到每个部分。
我最终希望能够在运行时添加/删除单元格。该部分尚未编码,但为了模拟添加新的单元格场景,我在代码中向数组添加了一个新项目,但没有增加“属性”检查器面板中该部分的行数。我曾希望我不需要进行任何其他更改来容纳新项目,因为在numberOfRowsInSection方法中,我将返回特定部分的数组计数。
这是我重新运行代码时收到的错误消息:
*由于未捕获的异常'NSRangeException'而终止应用程序,原因:'* - [__ NSArrayI objectAtIndex:]:索引3超出边界[0 .. 2]'
显然我需要以某种方式指定额外的行数。任何人都可以了解我如何在运行时这样做?谢谢。
答案 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方法。