2014-01-17 28 views
3

我有一个父表视图与自定义行,每个人推视图控制器tableview的可选选项,作为父视图控制器的属性存储。我的代码:为什么我的tableview不会调用didselectrowatindexpath直到第二次触摸?

- (void) tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { 
    /* 
    CrewPositions *selectedPosition = (self.crewPositionList)[indexPath.row]; 
    [self.delegate childCrewPositionDidSelect:selectedPosition]; 
    NSLog(@"child Selected Position: %@", selectedPosition.title); 
    [[self navigationController] popViewControllerAnimated:YES]; 
    */ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 

    CrewPositions *selectedPosition = (self.crewPositionList)[indexPath.row]; 
    self.selectedCrewPosition = selectedPosition; 
    NSLog(@"self.selectedCrewPosition: %@", self.selectedCrewPosition); 
    selectedFlightHistory.crewPosition = selectedPosition; 
    NSLog(@"self.selectedFlightHistory.crewPosition: %@", selectedFlightHistory.crewPosition.title); 

    [self.delegate childCrewPositionDidSelect:selectedPosition]; 

    NSLog(@"Popping view to parent"); 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

正常工作,遗憾的是该方法didSelectRowAtIndexPath不会被调用,直到后,我拼接单元的列表中的第二次。当我这样做时,它将先前选择的第一行传递给父视图。忽略大量的NSLog,只是捕获变量正在做的事情。

+0

是的 - 如果您阅读正在实施的委托方法的名称,它会有所帮助。 – Abizern

回答

8

didDeselectRowAtIndexPath方法重新命名为didSelectRowAtIndexPath

它被称为在第二次,因为你选择另一个单元格,并取消前一个

+0

噢,我的上帝,我瞎了! –

+3

你不是第一个犯了这个错误... –

+1

而你不会是最后一个 - (免责声明 - 我已经做了几次) – Abizern

2

,它的发生是因为你写错误的方法名。 didDeselectRowAtIndexpath:当行是de - 被选中时发送。

因此,更改方法名称didSelectRowAtIndexPath:以便实现正确的委托方法。

+0

不要重复的答案。 – rmaddy

相关问题