1

我想在我的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 节,但更新后第 0 节中只有 1 行”

4

1 回答 1

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 行。

于 2012-12-19T20:34:04.177 回答