部分而不是行导致崩溃

时间:2012-12-19 20:24:51

标签: objective-c ios uitableview

我希望我的TableView单元格之间有一些间距,所以我已将TableView代码更改为:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return [_boxs count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return 1;
}

我的问题是我的“添加行\对象”代码崩溃了。我应该对此代码做出哪些更改?

有问题的代码:

SomeClass *newObject = [[SomeClass alloc]initWithTitle:@".....  
[_boxs addObject:newObject];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_boxs.count-1 inSection:0];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];    
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:NO];    
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionMiddle];
[self performSegueWithIdentifier:@"FirstDetailsSegue" sender:self ];

-boxs是一个NSMutableArray。

这是我得到的错误: * 由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'尝试将第7行插入第0部分,但部分中只有1行更新'

后为0

1 个答案:

答案 0 :(得分:2)

您已在创建NSIndexPath的行中切换了行和列。您需要将代码修改为

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:_boxs.count-1];

如果您计划仅使用一个部分和多个行,则应更改委托方法以仅返回1个部分和[_boxs count]行。在这种情况下,你的代码就可以了。

根据您的评论,看起来您想要插入新的部分而不是行。试试这个,

[self.tableView insertSections:[NSIndexSet indexSetWithIndex:_boxs.count-1] withRowAnimation:UITableViewRowAnimationAutomatic];

您可以从代码中删除insertRow行。