自定义Tableview在iPhone5中崩溃(iOS7)

时间:2013-12-04 10:47:18

标签: objective-c uitableview ios7 iphone-5

在我的应用中,我使用两个表来过滤数据,第二个用于结果数据。我使用以下行在选定的索引位置滚动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'

而终止应用

3 个答案:

答案 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];