행 선택 위치IndexPath가 잘못된 IndexPath를 반환함
저는 정말로 이해하기 어려운 벌레를 만났습니다.내 UITableView의 첫 번째 행은 1을 반환하고 두 번째 행은 indexPath에서 0을 반환합니다!그게 어떻게 가능할 수가 있지?
제 '-(void) view DidLoad'에서는 여전히 모든 것이 정상입니다.첫 번째 행을 성공적으로 강조 표시합니다.
currentRow = 0;
[tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:currentRow inSection:0]
animated:NO scrollPosition:UITableViewScrollPositionNone];
변수가 있습니다.currentRow
선택한 행을 추적합니다(현재 선택한 행에 따라 다른 컨트롤이 변경됨).
이제 내 '행 선택 취소'에서IndexPath의 대리자 함수 I:
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
...
NSLog(@"IndexPath: %@", [indexPath description]);
}
로그에는 다음 항목이 표시됩니다.
IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 0]
내가 두 번째 줄을 건드리면, 그리고.IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 1]
첫 번째 줄을 터치하면 됩니다.
행 삽입, 삭제, 정렬 등이 없으며 스크롤도 없습니다.1개의 섹션과 3개의 행이 있는 그룹화된 스타일의 단순한 UI 테이블 뷰입니다.무엇이 원인일까요?
도와주셔서 고마워요.
S
didDeseRowAt를 구현했습니다.인덱스 경로.행이 더 이상 선택되지 않으면 실행됩니다.
두 번째 행을 누르면 첫 번째 행이 더 이상 선택되지 않으므로 [0, 1]이 표시됩니다.
첫 번째 행을 다시 누르면 두 번째 행이 더 이상 선택되지 않으므로 [0, 0]이 표시됩니다.
이것들은 완전히 예상된 것들입니다.
SelectRowAt 구현행을 선택할 때 응답하기 위해 필요한 경우 IndexPath.
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// ^
...
NSLog(@"IndexPath: %@", [indexPath description]);
}
제목에도 불구하고 오버로드된 방법은 사실didDeselectRowAtIndexPath
따라서 동작이 올바른 것처럼 들립니다. 첫 번째 행을 누르면 0번째 행이 선택 취소되고, 그 반대의 경우도 마찬가지입니다.
언급URL : https://stackoverflow.com/questions/4118993/didselectrowatindexpath-returns-wrong-indexpath
'programing' 카테고리의 다른 글
UI 레이블 높이를 텍스트로 조정 (0) | 2023.08.20 |
---|---|
CSS를 사용하여 HTML 앵커 태그를 클릭/링크할 수 없도록 만드는 것이 가능합니까? (0) | 2023.08.20 |
사용 가능한 모든 iPhone 해상도에서 이미지 스케일을 처리하는 방법은 무엇입니까? (0) | 2023.08.20 |
정수 필드를 텍스트로 바꿀 대소문자가 있는 MySQL SELECT (0) | 2023.08.20 |
jsPDF 라이브러리를 올바르게 사용하는 방법 (0) | 2023.08.20 |