EXC_BAD_ACCESS仅在从UITableView中完全滚动返回时返回

时间:2013-12-14 22:34:22

标签: ios xcode uitableview ios7

EXC_BAD_ACCESS(代码= 1,地址= 0x71474b80)

当用户从嵌套的UITableView中完全向下滚动返回时,会出现此错误。如果我不滚动到底部,则不会发生错误。

可能存在

建议的解除分配问题

UIViewTableController: "EXC_BAD_ACCESS" When Scrolling Up/Down Past the Max Position of the Table

我的代码是:

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

    static NSString *CellIdentifier = @"TroncalesInfo";

    TroncalesViewCell *cell = [[TroncalesViewCell alloc]init];
    cell = [tabla dequeueReusableCellWithIdentifier:CellIdentifier];
    cell.IDTroncal = [nombresTroncales objectAtIndex:indexPath.row];

    [cell setCellAtributes:indexPath db:dataBase];

    return cell;
}

3 个答案:

答案 0 :(得分:2)

这是我经常使用的一点点黑客。我不确切知道它为什么会起作用,但试一试;)。

将其插入viewController的viewWillDisappear中:

  

tabla.delegate = nil;

答案 1 :(得分:1)

我不知道这是否是您问题的根源,但是此代码:

TroncalesViewCell *cell = [[TroncalesViewCell alloc]init];
cell = [tabla dequeueReusableCellWithIdentifier:CellIdentifier];

应该更接近这个:

TroncalesViewCell *cell = [tabla dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
    cell = [[TroncalesViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

我认为您现有的代码可能会返回nil单元格,这会抛出异常。现在,你毫无意义地初始化一个单元格,然后扔掉它并用另一个单元替换它。

答案 2 :(得分:0)

从崩溃日志中,似乎TroncalesViewController的委托已被重新分配,但不应该重新分配。滚动视图时,您可以检查以确保TroncalesViewController的委托仍然存在。