0

我在滚动 tableview 时收到 EXC_BadAccess 错误消息。

以下是我在 cellForRowAtIndexPath 中完成的代码。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier=@"customCellHistory";

    customCellHistory *cell=(customCellHistory*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        NSArray *topLevelObjects=[[NSBundle mainBundle]loadNibNamed:@"customCellHistory" owner:self options:nil];
        for (id currentObject in topLevelObjects) {
            if ([currentObject isKindOfClass:[UITableViewCell class]] ) {
                cell=(customCellHistory*)currentObject;
                break;
            }
        }
    }

    cell.lb11.text=[cellArray1 objectAtIndex:indexpath.row];
    cell.lbl2.text=[cellArray2 objectAtIndex:indexpath.row];

    return cell;
}

我可以感觉到问题是由于上述代码中的一些错误而引起的。

我在上面的代码中使用了 CustomCell 来显示一个自定义的单元格。

谁能告诉我我在这段代码中做错了什么

4

4 回答 4

1

嘿,试试下面的代码,别忘了set the cell identifier在你自定义的 XIB 中customCellHistory

在顶部

#import "customeCellHistory.h"

然后

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *cellIdentifier = @"customCellHistory";

    customCellHistory *cell = (customCellHistory *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"customCellHistory" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }

    cell.lb11.text=[cellArray1 objectAtIndex:indexpath.row];
    cell.lbl2.text=[cellArray2 objectAtIndex:indexpath.row];

    return cell;
}
于 2013-05-08T15:12:58.283 回答
0

问题似乎来自您拥有的奇怪循环。使用最后一个对象方法从笔尖设置单元格。

于 2013-05-08T14:55:46.797 回答
0

您正在重用一个单元格,然后更改循环中的单元格,这可能会导致您正在查看的单元格不存在。

于 2013-05-08T15:01:17.173 回答
0
if (cell == nil) {
    NSArray *topLevelObjects=[[NSBundle mainBundle]loadNibNamed:@"customCellHistory" owner:self options:nil];

你不需要那个代码。只需在前面的表格视图中注册笔尖:

[self.tableView registerNib:[UINib nibWithNibName:@"customCellHistory" bundle:nil]
 forCellReuseIdentifier:@"customCellHistory"];

现在,当您调用时dequeueReusableCellWithIdentifier,将加载笔尖并交付单元格,如果重复使用堆中没有备用单元格。这可确保您始终拥有一个细胞,并且它是正确类型的细胞。使用框架为您提供的方法。

于 2013-05-08T15:01:31.333 回答