2017-05-01 5 views
0

알림 위젯에서 특정보기를 열고 싶습니다. 일반적으로 다른 답변은swift3 내비게이션 뷰 컨트롤러를 표시하는 방법

그래서, 난 이미 내 응용 프로그램에서 열립니다 viewA를 열고 viewB로 이동합니다 .. 당신이 전화를 계속하면 (let viewcontroller = ...) 그래서, 사용 메모리를 계속 .. 새보기를 만들 수 있습니다.

내 응용 프로그램 구조는 기본적으로 응용 프로그램이 시작될 때 viewA입니다.

제가 생각하기에 새로운 viewA를 만드는 대신 기존의 viewA에서 navigation.push를 사용하여 viewB로 이동하려고합니다.

특정 페이지가 이미 있는지 여부를 확인하는 방법, 상단에 페이지를 표시하는 방법, navigation.push가 작동하는 방법.

지금 난 당신이 탐색 컨트롤러에 액세스 할 수있는 가정 Appdelegate

let MainView: Main_View_List_ = mainStoryboard.instantiateViewController(withIdentifier: "Main_List_View") as! Main_View_List_ 
let nav = UINavigationontroller.init(rootViewController: MainView) 
UIApplication.topViewController()?.present(nav, animated: true, completion: nil) 

답변

0

에서 viewA를 열려면이 코드를 사용하고, 당신은 viewA 다시 팝업이 그런 짓을 할 것이다 :

 for viewController in nav.viewControllers { 
     if viewController is ViewAClass { 
      viewController.pushViewBFlag = true 
      nav.popToViewController(viewController, animated: true) 
      return 
    } 
    } 

viewA로 돌아 오면 pushViewBFlag를 확인하고 viewB를 만들고 푸시 할 수 있습니다.

내비게이션 컨트롤러의 루트로 viewA를 설정 한 것 같습니다. nav.popToRootViewControllerAnimated(true)을 사용하면 viewA로 돌아갈 수 있습니다. viewA에서 viewB 푸시를 처리해야합니다.