4

カスタム行を持つ親テーブルビューがあり、それぞれが親ビューコントローラー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セルのリストを2回タップするまで、メソッドは呼び出されません。すると、以前に選択した最初の行が親ビューに渡されます。大量の を無視しNSLogて、変数が何をしているかをキャプチャするだけです。

4

2 に答える 2

9

didDeselectRowAtIndexPathメソッドの名前をdidSelectRowAtIndexPath

別のセルを選択して前のセルの選択を解除するため、2回目に呼び出されます

于 2014-01-17T03:32:39.440 に答える
2

間違ったメソッド名を書いたために起こっています。didDeselectRowAtIndexpath:行が選択解除されたときに送信されます

したがって、メソッド名を変更しdidSelectRowAtIndexPath:て、実装が正しいデリゲート メソッド用になるようにします。

于 2014-01-17T07:24:16.987 に答える