Ios 在不使用重载数据的情况下向UITableView添加行
我有一个ViewController,它创建了一个新对象,然后又回到FirstViewController。m我有一个unwind方法,它应该用新对象的一行更新tableView。使用reloadData方法不会起作用,因为它会重新加载所有单元格,这会影响我在这些单元格中使用的方法。我只想添加一个新单元格,而不重新加载整个tableView。我的展开方法如下所示:Ios 在不使用重载数据的情况下向UITableView添加行,ios,objective-c,uitableview,reloaddata,nsindexpath,Ios,Objective C,Uitableview,Reloaddata,Nsindexpath,我有一个ViewController,它创建了一个新对象,然后又回到FirstViewController。m我有一个unwind方法,它应该用新对象的一行更新tableView。使用reloadData方法不会起作用,因为它会重新加载所有单元格,这会影响我在这些单元格中使用的方法。我只想添加一个新单元格,而不重新加载整个tableView。我的展开方法如下所示: -(IBAction)unwind:(UIStoryboardSegue *)segue { ABCAddItemViewC
-(IBAction)unwind:(UIStoryboardSegue *)segue {
ABCAddItemViewController *source = [segue sourceViewController];
ABCItem *item = source.object;
if (item != nil) {
[self.objectArray addObject:item];
[self.tableView reloadData];
}
}
我尝试添加这些行而不是[self.tableView reloadData]:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[self.objectArray indexOfObject:item] inSection:0];
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
但是,应用程序崩溃,我收到以下消息:
无效更新:节0中的行数无效。人数
更新(1)后现有节中包含的行必须是
等于该节中包含的行数,在
更新(1),加上或减去从中插入或删除的行数
该部分(插入1,删除0)加上或减去
移入或移出该节的行(0移入,0移出)
tableView中的行数由部分:
方法中的[self.objectArray count]
确定
我怎样才能做到这一点?或者有更好的方法吗?错误是,界面更新预期显示2行,但更新后数据源仅包含1行 您的“item”对象是否为
[NSNull null]
值
如果(item!=nil)项是[NSNull null]
值,则行可以等于true
你能把这张额外的支票放进去吗
if(item != nil && item != [NSNull null])
{
...
}
或者使用断点和调试器打印项的值:
lldb> po item
在调用insertRowsAtIndexPath
之前,必须使用附加数据更新数据源(self.objectArray
)。我试图替换[self.tableView reloadData]
行,但这产生了我提到的错误。在此之前,我将对象添加到数组中。调用reloadData
不会给出您发布的错误。这将仅来自对insertRowsAtIndexPaths:
的调用。顺便说一句,您需要在将行添加到数组的同一位置插入行。我不能使用reloadData
,因为重新加载整个表会重新启动某些方法