我的tableview中有五个部分。在我的(部分== 4)中,我从数组中显示。当我向下滚动时,它会崩溃
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
我的代码:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if (section == 4) {
return [mandArray count];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.section == 4) {
[self.label setNumberOfLines:10];
[self.label setText:[NSString stringWithFormat:@"%i. %@",indexPath.row + 1,[mandArray objectAtIndex:indexPath.row]]];
[cell.contentView addSubview:label];
}
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.section==4){
return [mandArray count] *20;
}
}
答案 0 :(得分:1)
提到的代码是正确的。我认为你正在加载表时修改 mandArray 。
我从数组加载表的过程就像这样。
首先初始化数组并将内容加载到数组中。
然后加载表。我还根据数组计数添加行计数委托。
**如果我更改了数组的内容,那么我会调用[tableview reload]
**,因此更改也会反映在表格中。
我认为你在加载表时修改了表,而不是调用reload方法。因为行计数委托方法每次加载tableview只调用一次。它使用相同的数据并尝试根据计数访问数据。所以要更新这个调用重载方法。