2014-08-31 1 views
0

표보기에서 각 셀에는 셀보다 작은 UIView가 있습니다. 사용자가이 UIView를 누르고 UIView 외부에서 셀을 눌렀을 때가 아니라면 Detail View에 segue를 수행하고 싶습니다. UIView에 제스처 인식기를 추가하려고 시도했지만 연결된 메서드가 호출 될 때 어떤 셀이 눌려 졌는지 알지 못합니다. 내가 무엇을 할 수 있을지 ?표 뷰 UI의 UIView 제스처 인식기

답변

0

태그 속성 (정수)을 각보기에 고유 한 방식으로 지정할 수 있습니다. 예를 들어, 섹션 번호와 행 번호의 조합 인 정수일 수 있습니다. 또는 테이블 데이터 원본의 셀에 대한 개체의 고유 ID입니다.

그러면 인식기에서 태그 값을 분석 할 수 있습니다.

0

'cellWasSelected : (MYCell *) cell'과 같은 메서드가있는 셀 하위 클래스에서 대리자 프로토콜 (및 일치시킬 대리자 속성)을 만듭니다. cellForRowAtIndexPath :에서 셀을 반환하면 ViewController를 셀의 대리자로 설정합니다. 셀 서브 클래스 내에서 탭핑 된시기를 판별하려는 메커니즘을 추가하십시오. 제스처는 좋습니다. 대리자 메서드를 호출하여 self를 인수로 전달하십시오. 귀하의 ViewController에서 tableview indexOfCell (또는 그와 비슷한 것, 내 머리 꼭대기에서 이름을 기억할 수 없음)을 호출하여 필요한 인덱스 경로를 얻을 수 있습니다. 그런 다음 수동으로 segue를 수행하십시오. '선택된 셀'을 저장하거나 이미 세그가 트리거되어있는 tableView를 사용하여 수동으로 셀을 선택할 수도 있습니다.

0

CELL에 대리인을 추가해야합니다.

@property (nonatomic,weak) IBOutlet UIView *tappableView; 

을하고 그것에 제스처 인식기를 추가 할 수있는 일, 당신도 알다시피, 당신과 같이, 사용자 정의 세포에 UIView의 참조를 얻을 수 있습니다.

지금,

-(void)didTapViewAtCell:(MyCustomCell*)cell 

이 프로토콜을 준수하여 제스처 인식의 대상 방법을 부르는 delegate을 가지고, 프로토콜을 작성하는 방법을 만들 수 있습니다. 뭔가 ...

[self.delegate didTapViewAtCell:self]; 

이 프로토콜을 UITableViewController에 구현하고이 방법을 구현하십시오. 나는 이것이 이것이 가장 좋은 방법이라고 생각한다. :)

+0

응답에 대해서는 Thx이지만 프로토콜에 익숙하지는 않습니다. 프로토콜을 만드는 방법을 좀 더 설명 할 수 있습니까? "이 프로토콜을 준수하는 대리인이 있습니까?"라는 것은 무엇을 의미합니까? 감사합니다 – Coconuts

+0

https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/DelegatesandDataSources/DelegatesandDataSources.html 먼저 읽어보십시오. :) – avismara

+0

좋아, 읽을 수는 있지만 잘 이해할 수는 없지만 여전히 프로토콜을 만들고이를 준수하는 대리인을 보유하는 방법을 이해하지 못했습니다. – Coconuts