在我的应用中,我使用两个表来过滤数据,第二个用于结果数据。我使用以下行在选定的索引位置滚动tableview,
self.indexPaths = [NSIndexPath indexPathForRow:0 inSection:indexPath.row];
[tableview scrollToRowAtIndexPath:self.indexPaths atScrollPosition:UITableViewScrollPositionTop animated:YES];
[tableview reloadData];
但是我的应用程序仅在iPhone5(iOS7)中崩溃,并且在所有设备中都运行良好,甚至是iPhone5(iOS6)。
为什么这只会在iPhone5(iOS7)上崩溃?
崩溃日志是:由于未捕获的异常'NSInvalidArgumentException'
答案 0 :(得分:4)
为索引路径传递整数(0)。您应该通过NSIndexPath,尝试:
NSIndexPath *ip = [NSIndexPath indexPathForRow:0 inSection:0];
[tableview scrollToRowAtIndexPath:ip atScrollPosition:UITableViewScrollPositionTop animated:NO];
答案 1 :(得分:2)
NSIndexPath
是一个对象,因此您无法传递 0 。
尝试[NSIndexPath indexPathWithIndex:0]
答案 2 :(得分:0)
self.indexPaths = [NSIndexPath indexPathForRow:0 inSection:indexPath.row];
RHS返回与行和节相对应的索引路径。
在上面的代码中,
您正在将indexpath.row
传递给inSection
参数。这可能是错误的。假设你有1个部分和5个行。当indexpath.row = 4
(例如)时,不会有对应于4的部分因此self.indexPaths
变为nil
,因为系统会尝试在第4部分中查找第4行,但第4部分不会存在!!
因此,当您将nil传递给下面的行时,它会显示nsinvalidargument
异常。
tableview scrollToRowAtIndexPath:self.indexPaths atScrollPosition:UITableViewScrollPositionTop animated:YES];