2012-09-30 3 views
1

작동하도록 Segues, 봉쇄 컨트롤러 및 스토리 보드를 밀어 얻는 방법 :내가 다음 페이지 흐름 (I 가능한 한 명확하게하려고합니다 그래서 큰 복잡)와 응용 프로그램을 짓고 있어요 함께

로그인 -> MainViewController 이제

는, MainViewController 두 개의 뷰/컨트롤러 호스트로에서 iOS 5에서 컨트롤러 봉쇄를 사용 SecondController에서

MainViewController 
    /    \ 
FirstController SecondController --> DetailsController 

을, 나는 (당신이 "로 생각할 수있는 별도의 뷰 컨트롤러에 SEGUE 할 details "로 MainViewController를 생각한다면 과").

SecondController에서 DetailsController에 "모달"세그를 사용하여 세그수를 할 수 있습니다. 하지만 iOS가 "팝"할 때 MainViewController가 다시로드됩니다. 나는 그렇게하기를 원하지 않는다.

"push"segue를 사용하면 스택에 UINavigationController가 없다는 런타임 오류가 발생합니다. 벌금.

Login --> UINavigationController --> DetailsController (but "initiated" by Second) 
        | 
      MainViewController 
      /    \ 
     FirstController SecondController 

그리고 SecondController에서, 나는 "푸시"SEGUE을 수행 할 수 UINavigationController가 알려주기 :

그래서 내가 뭘하려 옆에 내가 MainViewController 새로운 UINavigationController가의 루트 컨트롤러를 만들려고했다. 하지만 여전히 동일한 런타임 오류가 발생합니다 - UINavigationController를 찾을 수 없습니다.

탐색 스택 작동 방식을 이해하지 않아야합니다. UINavigationController에서 performSegueWithIdentifier :를 호출하기 때문에 호출자를 확인하지 않은 것일 수 있습니다.

"두 번째 iOS 앱"을 가이드로 사용 중이며이 방법 (모달 세그)을 처방합니다. 하지만 모든 가능한 경우 (그것은 비싼 것들을하고있어) MainViewController를 다시로드하고 싶지 않습니다. 내보기/컨트롤러/데이터를 "캐싱"iOS 선호합니다. 물론 세부 정보 페이지를로드 할 때 데이터를 캐시하는 코드를 작성할 수 있으며 다시 팝업 할 때 데이터를 다시 계산하는 대신 캐시를 다시로드 할 수 있습니다. 그러나 "밀어 넣기"Segue가 자동으로이 작업을 수행하기를 바랬습니다.

혹시 의견이 있으시면 고맙겠습니다. 고맙습니다.

+0

"팝백"이라고 말하면 실제로 popViewController : animated :를 사용하고 있습니까? SecondController로 돌아가려면 DetailsController의 [self.presentingViewController dismissModalViewControllerAnimated :]를 시도해 보셨습니까? – rdelmar

+0

미안 해요 - 그게 내가 "팝업 다시"의미 - dismissModalViewControllerAnimated :. "부모"뷰를 강제로 다시로드합니다. – tng

답변

0

푸시 기능을 사용하려면 IB에서 호출을 선택하고 편집기 메뉴의 탐색 컨트롤러에 포함해야합니다.

내비게이션 컨트롤러

+0

안녕하세요 - 저는 그것을 시도했습니다. 루트 컨트롤러 SecondController로 설정된 SecondNavigationController를 만들었습니다. 메인 MainViewController는 SecondNavigationController를 사용합니다 (그리고 탐색 표시 줄이 나타나기 시작했기 때문에 확인했습니다). 하지만 SecondController에서 Push Segue를 사용하려고 할 때도 여전히 동일한 예외가 발생합니다. – tng

+0

SecondController.navigationController가 NULL이 아니므로 올바르게 호스팅되어야 함을 의미합니다. 나는 왜 아직도 푸시 세그 (push segue)를 사용하여 예외를 얻었는지 잘 모르겠습니다. – tng

관련 문제