Iphone 如何从分组分区uitableview中添加/删除单元格?

Iphone 如何从分组分区uitableview中添加/删除单元格?,iphone,ios,uitableview,Iphone,Ios,Uitableview,如何以编程方式从分组节中添加或删除单元格 我使用故事板中的静态单元格创建了一个分组的表视图。在故事板内部,我使用属性检查器面板设置行数。例如,对于第1节,我定义了3行。然后使用一个包含3项的NSMutableArray,我可以在启动时正确地将值加载到每个部分中 我最终希望能够在运行时添加/删除单元格。该部分尚未编码,但为了模拟添加新单元的场景,我在代码中向数组添加了一个新项,但没有增加属性检查器面板中该部分的行数。我希望我不需要做任何其他更改来适应新项,因为在numberOfRowsInSect

如何以编程方式从分组节中添加或删除单元格

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

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

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

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


显然,我需要以某种方式指定一个额外的行计数。有人能告诉我如何在运行时做到这一点吗?谢谢

不应通过属性检查器执行此操作。它禁止您动态插入和删除单元格。 试一试

否则就这样做

-(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];
您还可以添加动画,以从右或右或上或下添加单元格

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

我猜您硬编码了分区的行数。因为从错误的角度看,您的部分似乎需要4个对象,但您的数据源只包含3个对象

在您的内部:

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

您应该返回类似于[myArray count]的值,因此如果您从数组中添加或删除对象,则添加或删除行应该不会有问题。

在UITableview中,您有用于插入和删除行的预定义方法,对于插入,我们可以使用InsertRowatineXpath方法;对于删除,我们可以使用DeleteRowatineXpath方法。

请添加
numberOfRowsInSection
方法的代码我正在一次测试一个部件。现在一切都是硬编码的。您说过我不应该在属性检查器中指定行数,但如果我不指定,我似乎无法绕过错误消息。这是我问题的症结所在。我认为通过在numberOfRowsInSection方法中返回[myArray count]可以处理添加/删除单元格的问题,但它不起作用。我似乎陷入了困境。我需要首先在属性检查器中指定行数,但稍后在运行时,当我想要修改行数时,会出现错误。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section