2014-10-08 2 views
1

사용자가 UITableView 내에서 셀을 선택하지 못하게하는 가장 좋은 방법은 무엇입니까? 내 프로그램이 테이블 뷰에서 selectRowAtIndexPath:을 호출하도록 허용 하시겠습니까?터치로 UITableViewCell 선택을 비활성화하지만 메서드 호출로 활성화

또한 UITableViewCell의 컨트롤을 대화 형으로 유지 (즉, touchesBegan:이 UITableViewCell에서 호출되도록 허용)합니다.

[tableView setAllowsSelection:NO]을 호출하면 selectRowAtIndexPath:을 호출해도 아무런 변화가 없습니다.

+0

설정 userInteraction에 사용하지 다음 selectRowAtIndexPath를 호출하려고 사용자 상호 작용. –

+0

불행히도 셀에 아무런 영향도 미치지 않습니다. 셀에서 'touchesBegan :'을 호출하지 않습니다. – golddove

+0

오크. 기본 셀 선택을 중단하고 touchesBegan을 사용하여 사용자 정의 선택을 제공하려는 이유를 간략하게 설명 할 수 있습니까? –

답변

0

selectRowAtIndexPath:을 프로그래밍 방식으로 호출 할 때 위임 메서드 willSelectRowAtIndexPath:이 호출되지 않는다는 것을 깨달았습니다. 그러나 사용자가 셀을 탭하면이 셀이 호출됩니다. 이 메서드는 선택을 방지하기 위해 nil을 반환 할 수 있습니다.

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return nil; 
} 

selectRowAtIndexPath: 만 프로그램 호출이 행을 선택하지 않습니다에 행 및 탭을 선택할 것이라는 점을 보장합니다.

+1

한 가지 작업을 수행 할 수도 있습니다. 1. 터치시 uitableview 객체의 대리자를 nil로 설정하고 을 시작합니다. 2. 다시 터치가 끝나면 대리자를 self로 설정합니다. – Rupesh

0

의 선택을 취소 상자 : 테이블보기 없음에있는 TableView뿐만 아니라 TableViewCell

enter image description here

+0

'UITableViewCell'의 컨트롤은 대화 형으로 유지되지 않고'touchesBegan :'은 호출되지 않습니다. – golddove

관련 문제