保护cellForRowatIndexPath将索引传递给超出其范围的数组

时间:2014-07-02 02:20:23

标签: ios objective-c arrays uitableview

这是我的问题:

假设我在每个单元格中有2 UITableViewCell个Label1和Label2。 Label1将继续在每个索引处接收一个值,因此array [0]和array [1]!= nil。 Label2的情况并非如此; Label2在其数组[0]处接收一个值,但是数组[1] = nil。

这是我尝试过的最新方法,但是,它并没有捕获array2超出范围。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *cellIdentifier = @"Cell";
    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];

      if (array1.count >= indexPath.row){
        UILabel *label1 = (UILabel *)[cell.contentView viewWithTag:1];
        NSString *label1String = [array1 objectAtIndex:indexPath.row];
        [label1 setText:label1String];

    }

    if (array2.count >= indexPath.row){
        UILabel *label2 = (UILabel *)[cell.contentView viewWithTag:2];
        NSString *label2String = [array2 objectAtIndex:indexPath.row];
        [label2 setText:label2String];

    }
}

1 个答案:

答案 0 :(得分:2)

数组索引的范围是0count-1,所以检查必须是

if ( indexPath.row < array2.count )

不允许该行等于计数。