UITableView didSelectRowAtIndexPath : 첫 번째 탭에서 호출되지 않음
에 문제가 UITableView's
didSelectRowAtIndexPath
있습니다.
내 테이블은 행을 선택할 때 새보기 컨트롤러를 초기화하고 푸시하도록 설정되어 있습니다.
테이블의 행을 처음 탭하면 메서드가 호출되지 않습니다. 다른 행을 선택하면 정상적으로 작동하기 시작합니다.
에 중단 점을 설정하여이를 확인했습니다 didSelectRowAtIndexPath
. NSLog
메소드에를 추가하면 마지막으로 새보기 컨트롤러를 푸시하는 두 번째 행을 선택하면 동시에 두 개의 로그 문이 콘솔에 나타납니다.
어떤 제안?
실수로 입력 한 모든 기회는 한 드 selectRowAtIndexPath를?
또한 xib 파일에서 테이블 뷰의 선택 속성을 확인하십시오. 필요에 따라 '단일 선택'또는 '복수 선택'을 사용하십시오.
다음과 같은 문제가 발생했습니다.
- 행의 첫 번째 탭-> 효과 없음, 선택 없음, 절대
- 두 번째 탭 및 다음-> 올바른 선택 동작, 항상
제 경우에는 Show Selection on Touch
인터페이스 빌더에서 오류가 확인 되었습니다. IB에서 여기를 선택 해제 할 수 있습니다.
누군가를 돕는 희망
수업에 제스처 인식기를 설정했는지 확인하십시오. 제스처를 제거하는 것이 나를 위해 일했습니다.
별이 정렬되기 위해 별이 정렬되어 있다고 생각하기 때문에이 답변을 게시하는 것에 대해서도 토론했습니다.
이 문제의 변형이 있고 다른 솔루션을 확인했습니다. 내 테이블보기에서 첫 번째 탭에서 테이블의 마지막 행을 처리하지 않습니다. 강조 표시되지만 didSelectRowAtIndexPath
호출되지는 않습니다. 다른 모든 행은 정상적으로 작동합니다. 그러나 테이블 뷰 바운스를 켜면 문제가 해결되는 것 같습니다 (그러나 테이블 뷰 바운스를 처리해야합니다).
해당 문제를 표시하는 셀에 대해 UITableViewCellSelectionStyleNone이 설정되었습니다 (ios9).
나는 결국 전화했다
[tableView deselectRowAtIndexPath:indexPath animated:NO];
가장 먼저
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
그것은 동일하지 않지만 충분합니다. ios10이 어떤 종류의 테이블 손상을 가져 오는지 궁금합니다.
스위프트 2
이 설정이 true인지 확인하십시오.
self.tableView.allowsSelection = true
이것을 당신의 바로 다음 viewDidLoad()
과 앞에 놓으십시오 .super.viewDidLoad()
스위프트 3
a가 아닌 클래스에서 Swift 3로 작업하고 UITableViewController
있고 UITableViewDelegate
를 사용하는 경우 메소드 제목을 사용해야 할 수도 있습니다.
@objc(tableView:didSelectRowAtIndexPath:) func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){...}
프로젝트를 Swift 3으로 마이그레이션했지만 나에게 도움이되었습니다. 상당히 새롭기 때문에 나중에 수정 될 수 있습니다.
클래스에서 UITapGestureRecognizer를 설정 한 경우 didSelectRowAtIndexPath에이 행을 추가 할 수 있습니다.
[tableView deselectRowAtIndexPath:indexPath animated:NO];
이것은 나를 위해 일했습니다.
이 문제는 tableView 내에서 제스처 인식기를 사용하여 작업 할 때도 발생합니다.이 경우 제거 할 필요가 없으며 제스처 속성 cancelsTouchesInView = false
이 터치가보기에 전달되는지 여부에 영향을 미치는 부울 값인지 확인해야합니다. 제스처가 인식됩니다.
스위프트 3
내 경우에는 다른 답변이 효과가 없었습니다.
tableView.delaysContentTouches = false
didSelectRowAt
첫 번째 또는 두 번째 탭에서 응용 프로그램에서 함수가 호출되지 않았습니다 ... 문제를 해결하려고 시도했지만 해결책을 찾을 수 없었습니다. 그러나 갑자기 인식하고 뷰를 사용하고있었습니다. 애니메이션 색상 변경 ... Delegate
애니메이션이 지속되는 동안 메서드가 호출되지 않았습니다
필자의 경우 제스처 인식기가있는 UITableView 섹션 헤더가 있습니다. 헤더를 탭하면 해당 섹션에 몇 개의 행을 삽입하고 확장 / 축소 섹션과 같이 삽입에 애니메이션을 적용해야합니다. 확장 및 탭했을 때 didSelectRow 델리게이트 메소드가 시작되지 않았습니다. 추가 탭 및 확장 / 축소 작업의 경우 예상대로 작동했습니다.
@Ayoub Nouri의 답변에 따라 cancelsTouchesInView를 false로 설정하면 문제가 해결되었습니다. tapGestureRecognizer? .cancelsTouchesInView = false
스위프트 4.2
속성 관리자에서 "터치 다운 지연"을 비활성화 하면 문제가 해결되었습니다.
그 후 클릭이 매끄럽고 didSelectRowAt가 즉시 실행됩니다.
나를 위해 일한 것은 "didSelect ..."를 입력 한 다음 자동 수정을 나머지 부분에 채우도록하는 것이 었습니다. 분명히 내 구문에 대한 세부 사항은 놀랍습니다. 다른 사람들이 말했듯이, IDE를 사용하십시오!
'Programing' 카테고리의 다른 글
모든 npm 모듈을 전체적으로 제거하는 명령? (0) | 2020.03.01 |
---|---|
datetime2 데이터 유형을 datetime 데이터 유형으로 변환하면 범위를 벗어난 값 (0) | 2020.03.01 |
사용자 이름과 비밀번호로 MongoDB를 보호하는 방법 (0) | 2020.03.01 |
배열 붕괴 란 무엇입니까? (0) | 2020.03.01 |
브라우저 쿠키 도메인은 어떻게 작동합니까? (0) | 2020.03.01 |