我有一个包含自定义行的父表视图,每个视图都推送一个视图控制器,其中包含tableview
个可选选项,这些选项存储为父视图控制器的属性。我的代码:
- (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 :(得分:9)
将您的didDeselectRowAtIndexPath
方法重命名为didSelectRowAtIndexPath
第二次调用它,因为您选择了另一个单元格并取消选择前一个单元格
答案 1 :(得分:2)
这是因为您写错了方法名称。当行 de - 被选中时,会发送didDeselectRowAtIndexpath:
。
因此,更改方法名称didSelectRowAtIndexPath:
以便实现适用于正确的委托方法。