我正在尝试使用insertRowsAtIndexPaths,所以我可以插入一个表行。我收到了这个错误:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (0) must be equal to the number of rows contained in that section before the update (0), plus or minus the number of rows inserted or deleted from that section (1 inserted, 0 deleted).'
我要做的是在尝试纠正问题时动态修改部分中的行数:
NSArray *indexPathIndex = [NSArray arrayWithObjects:[NSIndexPath indexPathForRow:0 inSection:0], nil];
[myTableView beginUpdates];
//***** HERE I AM TRYING TO DYNAMICALLY INCREASE NUMBER OF ROWS
[myTableView numberOfRowsInSection:1];
////////////////////////////////////////////////////////////
[myTableView insertRowsAtIndexPaths:indexPathIndex withRowAnimation:UITableViewRowAnimationTop];
[myTableView endUpdates];
最初,我的部分行数为0.我尝试在解决上述错误的过程中增加此数字,但代码[myTableView numberOfRowsInSection:1]似乎没有效果。
有人可以建议我如何解决这个问题吗?
谢谢你, 胜者。
答案 0 :(得分:0)
你不应该自己设置行数,UITableView自己管理它。删除该行。
myTableView numberOfRowsInSection:1];
答案 1 :(得分:0)
查看UITableViewDataSource协议,尤其是tableView:numberOfRowsInSection
方法。这将允许您动态设置节中的行数。
答案 2 :(得分:0)
tableView有一个数据源,通常是一个数组,可用于填充tableView的单元格。
- (UITableViewCell*)tableView cellForRowAtIndexPath..... {
//Dequeueing or alloc-init-ing a cell
SomeClass *someObject = [someArray objectAtIndex:indexPath.row]; // Something
// like this, where someArray becomes the source array.
...
}
现在在代码的其他部分,如果要动态更改tableView的内容,请更改someArray
,然后更改tableView。
[someArray insertObjectAtIndex:someIndex];
[myTableView insertRowsAtIndexPaths....]; //The indexPath is generally
// consistent with the someIndex.