2011-11-29 68 views
0

所以我有一個的tableView有勾號附件類型,我有這樣的方法:表查看有沒有選擇行

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSUInteger newRow = [lastIndexPath row]; 
    NSUInteger oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; 

    if (newRow != oldRow) { 
     UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath]; 
     newCell.accessoryType = UITableViewCellAccessoryCheckmark; 

     UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:lastIndexPath]; 
     oldCell.accessoryType = UITableViewCellAccessoryNone; 
     lastIndexPath = indexPath; 
    } 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

而且這似乎是第一次工作得很好,但是當我選擇該行第二它會拋出我並說EXC_BAD_ACCESS。當我將模擬器切換到4.3時,它只選擇行,然後不起作用。任何人都可以幫忙嗎?

+0

lastIndexPath @property是怎麼樣的? – phi

+0

@property(nonatomic,retain)NSIndexPath * lastIndexPath;像這樣 –

+1

如何聲明lastIndexPath?我的猜測是這是問題。第一次通過lastIndexPath是零,所以沒有問題。第二遍,它是一個指向已被釋放的對象的指針(從先前調用didSelectRowAtIndexPath的indexPath)。 –

回答

4

使用self.lastIndexPath = indexPath如果您有一個@property聲明爲lastIndexPAth