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
'Programing' 카테고리의 다른 글
키를 길게 누르고 VSCode에서 반복하려면 어떻게해야합니까? (0) | 2020.10.31 |
---|---|
JavaScript 함수를 호출하는 도구 모음에 사용자 지정 단추를 추가하는 방법은 무엇입니까? (0) | 2020.10.31 |
상수에 대한 PHPDocs를 작성하는 올바른 방법은 무엇입니까? (0) | 2020.10.31 |
Android : 텍스트없이 이미지가있는 토글 버튼 만들기 (0) | 2020.10.31 |
자바에서 고유 한 난수 생성 (0) | 2020.10.31 |