2012-09-22 135 views
2

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

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

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

这是错误信息,我得到的,当我重新运行该代码:

*终止应用程序由于未捕获的异常 'NSRangeException',原因是:“* - [__ NSArrayI objectAtIndex:]:指数3越界[0 .. 2]'

显然我需要以某种方式指定一个额外的行数。任何人都可以阐明我如何在运行时做到这一点?谢谢。

+0

请分享您的代码... – 2012-09-22 09:16:28

+0

请添加'numberOfRowsInSection'方法的代码 –

回答

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; 
} 

等不同的部分如果u有许多节.. 您可以重新加载整个表,当你从阵列读取数据更新..

[tableView reloadData]; 

,但更好的方法要做到这一点就是在块中插入像这样的行或多行。

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

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

我希望这可以帮助你! 干杯!

+0

我一次测试一件。现在一切都是硬编码的。你说我不应该在Attribute Inspector中指定行计数,但是如果我不这样做,我似乎无法绕过错误消息。这是我的问题的症结所在。我认为通过返回numberOfRowsInSection方法中的[myArray count]将处理添加/删除单元格问题,但它不起作用。我似乎陷入了22级。我需要首先在属性检查器中指定行计数,但后来在运行时,当我想修改rowcount时,我得到错误。 – sftoparis

0

我想你是硬编码你的部分的行数。因为看错误似乎是你的部分期待4对象,但您的数据源中只包含3

里面你:

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

你应该返回类似[myArray的数],因此添加或delting如果向数组中添加或删除对象,行应该不成问题。

0

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

相关问题