我有一个tableview(例如)在唯一的部分中有五行。编辑自定义单元格的代码都可以工作,但是当我需要使用具有较少行的新数据(例如两个)重新加载表数据时会出现问题。如果我编辑的索引的行数高于重新加载的表中的最大行数,则程序会崩溃。例外情况表明它正在尝试访问超出新表行数限制的更高编号的元素。
我尝试过:
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop];
之前的
[self.tableView reloadData];
但它没有用。
答案 0 :(得分:0)
这只能意味着你在这里访问第一行:
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop];
当你没有第一行时。
当您重新加载tableview时,请确保至少有一行。
尝试这样做:
if([self.tableview numberOfRowsInSection:0]>0)
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop];
答案 1 :(得分:0)
我相信你使用下面的代码取消选择你的手机
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop];
如果是这样,你应该使用它
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
[self.tableView deselectRowAtIndexPath:indexPath animated:NO];
答案 2 :(得分:0)
最后,取消选择旧行(即旧数据源仍处于当前状态),然后选择带有新数据源的第一行解决了问题。