index 1超出界限[0 .. 0]向下滚动时崩溃

时间:2014-05-06 09:09:29

标签: ios objective-c ios7 uitableview

我的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;
   }
}

1 个答案:

答案 0 :(得分:1)

提到的代码是正确的。我认为你正在加载表时修改 mandArray

我从数组加载表的过程就像这样。

首先初始化数组并将内容加载到数组中。

然后加载表。我还根据数组计数添加行计数委托。

**如果我更改了数组的内容,那么我会调用[tableview reload] **,因此更改也会反映在表格中。

我认为你在加载表时修改了表,而不是调用reload方法。因为行计数委托方法每次加载tableview只调用一次。它使用相同的数据并尝试根据计数访问数据。所以要更新这个调用重载方法。