2013-06-02 4 views
0

일부 데이터를 다른보기로 표시 할 때 몇 가지 문제가 있습니다.prepareForSegue를 통해 데이터를 전송하는 중

나는 연락처 테이블을 가지고 있는데, 첫번째 테이블 뷰는 이미지와 함께 연락처를 올바르게 표시하고 있습니다. 연락처를 클릭하는 동안 다른 테이블 뷰를 수행해야합니다. 그러나 어떤 이유로 그것은 첫 번째 접촉 만합니다 (루프에없는 것처럼 보입니다).

연락처 및 두 번째 ViewController 클래스가 하나 있습니다.

Here is the link to My code, to save place

+0

더 구체적 일 수 있습니까? 여기에 질문이 없습니다. 달성하고자하는 것은 무엇입니까? – danypata

+0

@danypata 연락처마다 다른 tableview에서 전화 번호를 보내려고하지만 목록의 첫 번째 연락처에서 항상 전화 번호를 보냅니다. 목록에서 두 번째 연락처를 클릭하면 (즉 위에서 아래로의 순서) 다른 컨트롤러에 첫 번째 연락처와 동일한 번호를 여전히 보냅니다. – Anton

답변

2

코드를 확인한 결과 prepareForSegue이라는 행이 이미 didSelectRowAtIndexPath에서 선택 취소 된 것이 문제라고 생각합니다. . 당신이하지 세포와 테이블보기 사이를 뷰 컨트롤러 사이의 SEGUE를 연결해야 작동이 접근

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
     [self.contTableView deselectRowAtIndexPath:indexPath animated:YES]; 
     [self performSegueWithIdentifier:@"NextTable" sender:indexPath]; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
     if ([[segue identifier] isEqualToString:@"NextTable"]) { 
     NSIndexPath *indexPath = (NSIndexPath*)sender 
     contact = self.contactsToShow[indexPath.row]; 
     [segue.destinationViewController setPhoneNumbers:contact.numbers]; 
    } 
} 

위해 : 여기 가장 좋은 방법은 같은 performSegue 방법 무언가로 didSelectRowAtIndexPath에서 선택한 인덱스 경로를 보낼 수 있다고 생각 제어 장치.

+0

그것은 나를 위해 완벽하게 작동합니다. 그러나 셀과 컨트롤러의 차이점은 무엇입니까? 작은 설명을 들려 주시겠습니까? – Anton

+0

@Anton 셀과 대상 뷰 컨트롤러 사이에 셀을 연결할 수 있습니다.이 경우 셀을 누를 때 자동으로 푸시/모드가 수행되지만'didSelectRowAtIndexPath' 메서드가 호출되고'performSegue' 코드가 있기 때문에' didSelectRowAtIndexPath' 두 뷰 컨트롤러를 밀어 넣는 것을 끝내지 만 괜찮지는 않습니다. (확실하지는 않지만 대상 VC에 segue를 연결하기 위해 정적 셀을 가져야한다고 생각합니다.) – danypata

+0

및 user2445981 Thanks Pals :) – Anton

1

문제는 라인 (196)이다 : 그것은 내가 "pastie"링크를 만들어

일어나는 이유를 이해할 수 없다 당신 싶어 선택한 행의 인덱스 경로가 있습니다. 그러나 215 행에서 선택 후 즉시 셀의 선택을 취소하기 때문에 색인 경로는 항상 0입니다.

+0

가장 빠른 답변을 주셔서 감사합니다. 모든 메소드 didSelectRowAtIndexPath에 주석을 달았습니다. 그러나 여전히 동일합니다. 문제가 segue 메서드에 있다는 것을 알았지 만이 IndexPath 문자열에 무엇을 추가해야합니까? – Anton

관련 문제