执行willSelectRowAtIndexPath后生成的EXC_BAD_ADRESS

时间:2013-07-23 14:16:24

标签: objective-c cocoa-touch

为什么在执行willSelectRowAtIndexPath之后和didSelectRowAtIndexPath之前生成EXC_BAD_ADRESS? 如果没有willSelectRowAtIndexPath实现,它将完美运行。

这是我的代码:

 - (void)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        KMWTableViewCell *cell = (KMWTableViewCell *) [tableView cellForRowAtIndexPath:indexPath];
        if(cell){
            cell.visibleView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"cellBackPressed.png"]];
        }
    }

    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        KMWTableViewCell *cell = (KMWTableViewCell *) [tableView cellForRowAtIndexPath:indexPath];
        if(cell){
            [self setCurrentAccountId:[[[KMWAppDelegate accounts] objectAtIndex:indexPath.section] objectForKey:@"accountId"]];
            [self performSegueWithIdentifier:@"services" sender:self];
        }
    }

1 个答案:

答案 0 :(得分:5)

方法签名错误。它的返回值应为NSIndexPath

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    KMWTableViewCell *cell = (KMWTableViewCell *) [tableView cellForRowAtIndexPath:indexPath];
    if(cell){
        cell.visibleView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"cellBackPressed.png"]];
    }

    return indexPath;
}

在您的实现中,您最终需要返回给定的indexPath