Programing

didSelectRowAtIndexPath가 잘못된 IndexPath를 반환합니다.

lottogame 2020. 10. 31. 09:10
반응형

didSelectRowAtIndexPath가 잘못된 IndexPath를 반환합니다.


정말 수수께끼의 버그를 만났습니다. 처음으로 내 jQuery과 반환의 행 1 하나를 반환 0 indexPath에서! 어떻게 가능할까요?

내`-(void) viewDidLoad`에서 모든 것이 여전히 괜찮습니다. 첫 번째 행을 성공적으로 강조 표시하고 있습니다.

currentRow = 0;
[tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:currentRow inSection:0] 
  animated:NO scrollPosition:UITableViewScrollPositionNone];

currentRow어떤 행이 선택되었는지 추적하는 변수 가 있습니다 (현재 선택된 행에 따라 다른 컨트롤이 변경됨).

이제 내`didDeselectRowAtIndexPath` 대리자 함수에 다음이 있습니다.

-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
...
NSLog(@"IndexPath: %@", [indexPath description]);
}

로그에는 다음이 표시됩니다.

IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 0]I 때 터치 번째 행 및 IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 1]I 터치 때 첫번째 행.

행 삽입, 삭제 또는 정렬 등이 없으며 스크롤도 없습니다. 1 개의 섹션과 3 개의 행이있는 간단한 UITableView, 그룹화 된 스타일입니다. 원인은 무엇입니까?

도와 주셔서 감사합니다,
S


당신은 구현 selectRowAtIndexPath은 . 행이 더 이상 선택되지 않으면 실행 됩니다.

두 번째 행을 터치하면 첫 번째 행이 더 이상 선택되지 않으므로 [0, 1]이 표시됩니다.
첫 번째 행을 다시 터치하면 두 번째 행이 더 이상 선택되지 않으므로 [0, 0]이 표시됩니다.

이것들은 완전히 예상됩니다.

구현 선택 RowAtIndexPath은 행이 때 당신이 응답에 필요한 경우 선택 .

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    //                                       ^
    ...

    NSLog(@"IndexPath: %@", [indexPath description]);
}

제목에도 불구하고 오버로드 된 메서드는 사실 didDeselectRowAtIndexPath이므로 동작이 올바른 것처럼 들립니다. 1 번째 행을 터치하면 0 번째 행이 선택 해제되고 그 반대의 경우도 마찬가지입니다.

참고 URL : https://stackoverflow.com/questions/4118993/didselectrowatindexpath-returns-wrong-indexpath

반응형