2014-01-17 2 views
3

사용자 정의 행을 가진 부모 테이블 뷰가 있는데, 각 뷰 뷰어 컨트롤러는 tableview의 선택 가능한 옵션을 가지고 부모보기 컨트롤러의 속성으로 저장됩니다. 내 코드 :제 2 접촉까지 내 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가 나는 세포의 목록에게 2 시간을 누릅니다 때까지 호출되지 않습니다, 제대로 작동합니다. 이 작업을 수행하면 이전에 선택된 첫 번째 행이 부모보기로 전달됩니다. NSLog의 많은 양을 무시하고 변수가 수행하는 작업 만 캡처합니다.

+0

예 - 구현중인 대리자 메서드의 이름을 읽는 것이 좋습니다. – Abizern

답변

8

그것이 당신의 선택으로 인해 다른 셀 2 시간이라고 didSelectRowAtIndexPath

didDeselectRowAtIndexPath 방법의 이름을 변경하고 잘못된 메서드 이름을 썼다 때문에 일어나고 이전

+0

오, 세상에, 나는 장님이야! –

+3

당신은이 실수를 저지른 최초의 사람이 아닙니다 ... –

+1

그리고 당신은 마지막이 될 수 없습니다 - (면책 조항 - 나는 몇 번 했어요) – Abizern

2

선택을 취소합니다. 행이 - 선택 될 때 didDeselectRowAtIndexpath:이 전송됩니다.

따라서 메서드 이름을 으로 변경하면 올바른 대리 메서드를 구현할 수 있습니다.

+0

답변을 중복하지 마십시오. – rmaddy

관련 문제