2016-06-25 2 views
0

내 앱에 NavigationController가 있습니다. 스택의 첫 번째 화면은 TermsConditionVC이고 LoginVC 다음 MainVC입니다. 실행하면 TermsConditionsVC로 바로 이동합니다.스위프트 : 탐색 컨트롤러 스택의 첫 번째 (이상) 화면 건너 뛰기

그러나 사용자가 TermsConditions에 동의하고 Logged in에 로그인했는지 여부에 따라 TermsConditionsVC 및/또는 LoginVC를 건너 뛰고 MainVC로 바로갑니다. 내가이 상황에서 여러 네비게이션 컨트롤러를하는

이 이해가되지 않습니다하지만 난 스택 탐색 컨트롤러에 (특히 첫 화면을 화면을 생략하는 방법을 알아낼 질수? 당신의 AppDelegate.swift 파일의에서

+0

모든 뷰 컨트롤러를 유지하는 것이 적절하지 않기 때문에 네비게이션 스택의 뷰 컨트롤러를 밀어 넣는 대신 바꿀 수 있습니다 네비게이션 스택에서 앱 수명주기를 통해 –

+0

어떻게 든 문제가 누락되었습니다. 'MainVC'를 스택에 넣는 게 어떨까요? – Sulthan

답변

5

을 응용 프로그램 (didFinishLaunchingWithOptions) 함수 ...

첫째, 코드에서 스토리 보드 파일을 가져 :

let storyboard = UIStoryboard(name: "your_storyboard_name_here", bundle: nil) 

다음은 루트의 ViewController를 얻을. 귀하의 경우 그것은 UINavigationController 수 있습니다. 루트 컨트롤러는 스토리 보드 파일에서 화살표가 가리키는 것과 같습니다.

let root = storyboard.instantiateViewControllerWithIdentifier("root") as! UINavigationController 

"루트"는 스토리 보드 파일에 실제로 이름이 필요합니다. "StoryboardName".storyboard로 가서 UINavigationController를 클릭하십시오. ID 관리자 (왼쪽에서 세 번째 탭)로 이동하여 스토리 보드 ID를 입력하십시오. 당신이 그것에 인 동안,보기의 스토리 보드 ID에 넣어 당신은 점프 할

셋째

let destination = storyboard.instantiateViewControllerWithIdentifier("main_vc") 

넷째

root.pushViewController(destination, animated: false) 

당신이 돈 있도록 false로 애니메이션을 설정 ' 당신이 그보기로 점프 할 때 기본 애니메이션 쇼가 없습니다. 나는 사용자가 이것을 말할 것이라고 확신하며, 아무 것도 누르지 않은 채로 일어난 것처럼 보일 것이다. 그것은 당신이 루트로 현재 창 설정이 단계에 떨어져

다섯 번째

self.window?.rootViewController = root 

을 넣을 수 있습니다. 기억하십시오, 루트는 MainVC ViewController를 방금 밀어 넣은 UINavigationController입니다. UINavigationController를 설정하지 않고 대신 MainVC ViewController를 설정하면 탐색 막대가 사라집니다. 그래서 네비게이션을 유지할 수 있도록 ViewController가 아닌 루트 (UINavigationController)를 설정해야합니다.

+0

차가움. 나는 그것을 시험 할 것이고 당신의 대답을 선택할 것입니다. 탐색 스택에서 뷰를 푸시/대체한다고하는 것이 무엇입니까? – Kashif

+1

예. 탐색 스택은 이름에서 알 수 있듯이 말 그대로 스택과 같습니다. 따라서 이전보기로 이동할 때보기를 맨 위에 밀어 넣고 끕니다. 그것을 기억하는 가장 좋은 방법은 네비게이션 컨트롤러가 아래쪽에 있도록 스토리 보드를 볼 때 머리를 기울이는 것입니다. 그런 다음 방향 화살표를 따라 가면서 각 ViewController가 스택에 푸시 된 것을 상상해보십시오. 그리고 스택에서 튀어 나오는 것과 같은 화살표 방향에 어긋나게 할 때 – Eyesofbanquo

+0

이 코드를 AppDelegate 대신 일반 ViewController에서 어떻게 사용할 수 있습니까?(AppDelegate 내부에 윈도우 변수가 없다면) – Kashif

관련 문제