2013-01-17 2 views
0

저는 작업중인 앱으로 약간의 벽돌 벽을 실행했습니다. 탐색 컨트롤러에서 특정보기 컨트롤러로 이동하는 방법에 대해 머리를 터뜨릴 수 없습니다. 스택.UINavigationController의 특정 지점으로 이동

그래서 앱의 구조에 대한 개요를 알려주세요. 뷰 간의 탐색을 위해 Storyboards와 Segues를 사용하고 있습니다.

홈 화면 - 서버에서 최신 작업 업데이트 4 개 목록을 가져 와서 테이블에 표시하고 UINavigationController를 모달로 표시하는 버튼이 있습니다.

UINavigationController가

작업 목록 - 서버에서 현재의 모든 작업 목록을 가져 와서 테이블에 표시합니다. 셀을 선택하면동안 작업 세부 정보에 jobid이 설정되고 스택으로 푸시됩니다.

작업 세부 정보 - 작업의 모든 세부 정보 (설명, 사진 등)를 가져 와서 표시합니다.

그래서 홈 화면 버튼> 작업 목록> 작업 세부 정보를 통해 작업을 탐색해도 문제가 없으며 완벽하게 작동합니다.

홈 화면에서 최신 작업 업데이트 중 하나를 선택할 때 특정 작업의 세부 정보로 이동하는 방법을 알아낼 수 없습니다.

나는 충분히 설명했으면 좋겠다. 어떤 도움이라도 대단히 감사하겠습니다.

감사합니다. 사용자가 "최신 작업"을 선택하면

enter image description here

그런 다음에 밀어를 사용할 수 있습니다 : 당신은 당신이 추진하고자하는 뷰 컨트롤러에 ID를 할당 할 수있는 인터페이스 빌더에서

답변

1

당신의 JobListViewController에 몇 가지 속성을 확인하십시오 : 당신의 JobListViewController 년대에 그런

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    [(JobListViewController*)[segue.destinationViewController topViewController] 
            setInitialisedWithSelectedJob:selectedJob]; 

} 

을 : 당신이 작업 패스를 선택하는 경우가 JobListViewController에 initialisedWithSelectedJob하기 위해 홈 화면에서 모달 제시

@property (assign) int initialisedWithSelectedJob; 
@property (assign) int selectedJob; 

viewDidLoad :

if (self.initialisedWithSelectedJob) 
    { 
     self.selectedJob = initialisedWithSelectedJob; 
     [self performSegueWithIdentifier:@"onToJobDetails" sender:self]; 
     self.initialisedWithSelectedJob == 0; 
    } 

initialisedWithSelectedJob을 재설정해야만 JobDetails 화면에서 바로 돌아 오지 않고 다시 돌아올 수 있습니다.).

JobListViewController의 prepareForSegue에서 이미 수행 한 것처럼 selectedJob ID를 전달할 수 있습니다.

갱신

이렇게하면 JobListViewController에 작업 상세 정보에서 돌아갑니다. 홈 화면에서 작업 이동 -> 작업 목록 화면 -> 작업 세부 정보 화면은 홈 화면 또는 목록 화면에서 작업을 선택했는지 여부에 관계없이 일관됩니다.

0x7fffffff 님의 답변을 따르면 홈 화면 또는 작업 목록 화면에서 작업을 선택하는 경우에도 탐색이 매우 다릅니다.

당신의 디자인을 조금 재고해야하는지 궁금합니다. 홈 화면과 JobListViewController에서 작업리스트가 약간 중복 될 수 있습니까?

+0

그것은 훌륭한 대답이며 스택 순서를 유지하면서 완벽하게 작동했습니다. 나는'0x7fffffff' 메서드를 사용하는 편이 더 편합니다. 고맙습니다. 집보기에서 최신 작업 업데이트가 중복되는 것은 확실하지 않습니다. 이 짧은 목록은 다른 순서로 표시되고 작업에 대한 다른 정보를 표시 할 수있는 작업 목록과 매우 다릅니다. 그러나 생각에 감사 드리며 설계시 고려되었습니다. –

0

그 식별자를 가진 뷰 컨트롤러.

UIViewController *detailController = [[self storyboard] instantiateViewControllerWithIdentifier:@"myID"]; 
[[self navigationController] pushViewController:detailController animated:YES]; 

물론 이렇게하려면 네비게이션 컨트롤러에 홈 뷰 컨트롤러를 삽입해야합니다.

+0

감사합니다. 나는 현재의 탐색 스택을 유지 관리하기 때문에 아래의 '그랬다'의 방법을 선호합니다. 그러나 Storyboard ID를 그렇게 사용하는 것에 대해 몰랐기 때문에 유용했습니다. –

관련 문제