2016-08-24 6 views
0

고유 한 루트가있는 여러 개의 (4) 탐색 컨트롤러가있는 iOS 앱이 있습니다.모든 스택에서 모든 컨트롤러 제거

구조는 다음과 같습니다

NavController (루트 : 로그인)

-> TabBarController (홈) - (검색) - (프로필)

------> NavController (루트 : 홈)

-------------> TableController

-----------------> DetailController

------> NavController (루트 : 검색)

은 ------> NavController (루트 : 프로필) (여기에서 로그 아웃 버튼)

나는에서 오전 때 이 navigationcontrollers (즉 Profile) 중 초기 로그인 화면으로 이동해야하는 로그 아웃 버튼이 있습니다. 로그인을로드하기 전에 모든 탐색 스택의 모든 컨트롤러가 제거되었는지 어떻게 확인할 수 있습니까?

나는 poptorootviewcontroller 시도했지만 그것은 단지 당신이 처리 할 수 ​​NSNotificationCenter를 사용할 수있는 프로필 페이지

답변

0

될 것입니다. 사용자가 로그 아웃 할 때

사용하여 앱에 로컬 알림을 게시 :

NSNotificationCenter.defaultCenter().postNotificationName("kLogOut", object: self) 

그런 다음 각 탭의 루트 뷰 컨트롤러에, 그 알림을 수신하도록 등록 및 선택 기능 구현 :

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(YourViewController.logOutNotificationAction), name: "kLogOut", object: nil) 

func logOutNotificationAction() { 
    self.navigationController?.popToRootViewControllerAnimated(false) 
}