2012-02-18 3 views
9

표준 전환과 세부 공개 버튼이있는 UITableView 간의 전환을 처리하기 위해 스토리 보드/세그먼트 (Seague)를 사용하려고합니다. 다음과 같이accessoryButton의 segue에 대한 IndexPath

  1. 타이있는 UITableViewCell와의 ViewController 사이의 주요 SEGUE
  2. 타이 보조 SEGUE 부모의 ViewController에서 새의 ViewController에
  3. accessoryButtonTappedForRowWithIndexPath 구현 :이 길을 내 프로젝트 설정 여기에 몇 가지 다른 게시물을 읽은 :

    -(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { 
        [self performSegueWithIdentifier:@"DetailSegue" sender:self]; 
    } 
    

이 잘 작동하고 내 prepareForSegue: sender:는 C를 얻을 수 예상대로 다행히. 문제는 선택한 요소의 indexPath를 알아야한다는 것입니다. 있는 UITableViewCell에서 SEGUE는 indexPath과 같이 검색 : 나는 accessoryButton라고 한 그렇게하려고 할 때

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 

불행하게도, null을 반환합니다.

나는 떨어져이 코드의 일부를 근거로하고 원래 질문은 여기에 있습니다 : accessoryButtons에 대한 indexPath를 반환있는 tableView하는 방법이 Detail Disclosure Button and Segues

있습니까? 다른 방법으로 indexPath에 액세스해야합니까?

답변

16

에 당신은 accessoryButtonTappedForRowWithIndexPath를 오버라이드 (override) 할 필요가 없습니다에 액세스 할 수 있습니다. prepareForSegue에서

대신, 상세 개시 버튼 작업 :

[self.tableView indexPathForSelectedRow] 

사용 :

[self.tableView indexPathForCell:sender] 

송신자는 이미 상세히 개시 버튼의 셀이다.

+2

감사합니다 아담, 이것이 받아 들여지는 대답이어야합니다! – Pat

+0

내가 이것을했을 때 보낸 사람은 내가 속한 TableViewController였습니다. performSegue에서 보낸 사람으로 셀을 통과했습니다 –

+0

어떻게 스위프트 3에서이 작업을 수행합니까? – nyxee

13

sender 인수는 문서에 따르면, :

당신이 SEGUE를 시작하는 데 사용할 개체입니다. 이 오브젝트는 실제 segue 동안 정보를 제공합니다.

당신이 다음 prepareForSegue:에 인덱스 경로에 액세스하는 대신 self의 보낸 사람으로 인덱스 경로를 사용할 수없는 이유는 어떤 이유가 표시되지 않습니다.

작동하지 않는 경우, 바르에서 인덱스 경로를 저장하고 prepareForSegue

+0

보낸 사람으로 indexPath를 전달하면 정상적으로 작동합니다. 일단 누군가가 언급하면 ​​아주 분명해 보입니다. 감사. – valdarin

+0

좋은 아이디어, 나는이 정보를 전달하기 위해 지역 변수가 필요할지도 모른다고 생각하기가 꺼려졌다. – trapper

관련 문제