2012-06-03 5 views
1

Segue를 다른 뷰로 푸시하도록 구성된 tableView가 있습니다. 테이블은 2 개의 섹션으로 나뉩니다. 다음 뷰로 이동하면 데이터가 모두 전송되고 섹션에 문제가 있습니다.tablevew dosent work의 2 섹션에서 segue 푸시

내 섹션 0에 2 개의 행이 있고 섹션 1에 1 개의 행이 있다고 가정 해 보겠습니다. 섹션 1 행을 확인하려면 어떻게해야합니까?

SEGUE에 대한 storybaords 및 preper 내가

row = indexPath.row; 

if (section == 0) 
{ 
    if (row == 0) 
     data = @"Zero"; 

    if (row == 1) 
     data = @"One"; 
} 

if (section == 1) 
{ 
    if (row == 0) 
     data = @"Two"; 

    if (row == 1) 
     data = @"Three"; 
} 

을했고, 지금은 작동하지 않습니다 전에. 섹션 1에서 0 행을 클릭하면 "2"가 아닌 "0"이됩니다. 왜 그럴까요? 섹션 0과 섹션 1은 어떻게 효과적으로 다를 수 있습니까?

+0

indexPath가 nil이면 섹션 = 0 및 행 = 0이됩니다. 코드에 더 많은 컨텍스트가 필요합니다. 그럴 경우 아무런 문제가 없습니다. –

+0

이제는 질문이 명확 해집니다 (추가하는 것을 잊어 버린 첫 번째 코드 줄을 추가합니다). 어떤 경우에도 행이 0이 아닙니다. –

답변

0

야, 여기는 section = indexpath.section입니까? 이며 여기에는 prepareForSegue 예제가 있습니다.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    NSIndexPath *indexpath = [self.tableView indexPathForCell:sender]; 
// indexpath.section 
// indexpath.row 
} 
+0

나는 집에 갈 때마다 내가 그걸 다 시도했다고 생각하지만 다시 시도하려고한다. –

+0

Tnx! 내 문제는 "indexPathForCell : sender"입니다. 나는 "indexPathForRow : sender"라고 썼습니다. 이제 "if section"이 효과적입니다! –

0
  1. 셀에 표시되는 데이터를 cellForRowAtIndexPath:으로 설정해야합니다.
  2. IB의 프로토 타입 셀을 Push Segue가있는 다음보기 컨트롤러에 연결하기 만하면됩니다.
  3. 그런 다음 prepareForSegue을 사용하여 새보기 컨트롤러에 필요한 데이터를 전달합니다.

올바른 sectionrow 매개 변수는 indexPath 변수에 있습니다.

+0

Tnx Mundi, 정확히 내가 한 일입니다. 그러나 다른 섹션을 누르면 다른 데이터를 전달하고 싶습니다. 그리고 내가 셀 사이에서 서로 다를 수있는 유일한 방법은 섹션이 아닌 "행"뿐입니다. 그래서 내가 섹션 0, 행 0을 누르면 섹션 1, 행 0을 누르면 결과가 달라야한다는 것과 같은 결과를 얻습니다. –

+0

아닙니다.'indexPath.section'과'indexPath.row'를 검사 할 수 있습니다. – Mundi