0

我有一个UITableView在屏幕最初加载并位于(0,44). 执行操作后,表格会重新加载,并且需要将框架调整为全屏(0,0)

当我跑

self.table.frame = CGRectMake(0, 0, self.table.frame.size.width, self.table.frame.size.height + 44);

我收到此错误: 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 4 beyond bounds for empty array'

我还注意到,如果我硬编码高度值 fo358或更低,代码将运行,但如果它359或更高,我会得到相同的错误。

4

1 回答 1

0

错误消息表明您超出了数组的范围,因此请检查您的 UITableViewDataSource 和 UITableViewDelegate 方法的每个部分,了解您访问数组的位置,看看它们是否会导致问题。使用断点和 NSLog() 查看崩溃发生的位置。

如果我是你,我会先看tableView:cellForRowAtIndexPath:. 我会在那里某处有一条线从数组中拉出一个项目,而无需先检查数组是否有那么多项目。当您的表格位于较小的框架中时,它显示的行数较少,因此您还没有超出界限。然后,当您增加框架时,表格将尝试显示比数组中的元素更多的行,从而导致崩溃。

于 2012-07-25T18:12:16.953 回答