2011-11-01 135 views
0
的一切,我要去告诉你,我得到的错误,那么我会试着解释我在做什么来得到这个错误等

NSRangeException导致应用程序崩溃的电话,但不是在模拟器上

2011-11-02 10:17:57.665 code[1327:707] *** Terminating app due to uncaught exception 'NSRangeException', reason: '-[UITableView scrollToRowAtIndexPath:atScrollPosition:animated:]: section (0) beyond bounds (0).' 
*** First throw call stack: 
(0x31fe88bf 0x31d581e5 0x31fe87b9 0x31fe87db 0x32b6df1f 0x29c9b 0x32ae26b5 0x32b3daf1 0x32afed21 0x32afea71 0x32afe78b 0x32afe4ff 0x32ab581b 0x32abafb9 0x3193aba7 0x3273be8d 0x31fbb2dd 0x31f3e4dd 0x31f3e3a5 0x3204afed 0x32ace743 0x35a1 0x301c) 
terminate called throwing an exception(gdb) 

第一

这是我正在做的,以获得此错误。 enter image description here

任何时候,我第二次用indexpath [0,1]的数据集进入子视图时,应用程序将抛出此错误。

这是发生错误的代码。 subview.m

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    //Center previously selected cell to center of the screen 
    [self.tableView reloadData]; 
    [self.tableView scrollToRowAtIndexPath:oldCheckedIndexPath atScrollPosition:UITableViewScrollPositionMiddle animated:NO]; //happens on this line 
} 

并且这是来自该错误的输出。 enter image description here

我应该看什么..我真的不知道什么是好的或坏的。 真是令人沮丧的是,如果我从主视图或其他任何其他视图进出IndexPath [0,0],它可以正常工作,并且此应用永远不会有问题。有人可以帮助我,或者至少让我知道问题可能是什么或在哪里。

+0

myDataArray is nil is this right? –

+0

我会检查现在 –

+0

你的例外是告诉你,表认为它有零部分。 –

回答

0

我曾在我的项目有类似的问题,我是从我的数据源中删除的对象,然后立即调用[self.tableview reloadData];

我做了什么来解决这个问题是呼叫:

dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue(), ^(void){ 
       [self.tableView reloadData]; 
      }); 

这基本上要求reloadData在下一次运行循环中。你可以使用做类似的事情。

所以我的建议是尝试调用:

dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue(), ^(void){ 
    [self.tableView scrollToRowAtIndexPath:oldCheckedIndexPath atScrollPosition:UITableViewScrollPositionMiddle animated:NO]; 
} 

注意:你并不需要真正有规定,这两种技术强制法在下次的启动被称为延迟时间运行循环。

相关问题