2016-09-13 5 views
0

내가 다른 ViewController을 제시하고 다시 오지 않을 것이다라고 없지만, 문제는 deinit{}가 호출되지 않는 것입니다 않습니다. 탐색하기 전에 각 ViewController을 스택에서 어떻게 제거해야합니까? 아니면 다른 방법을 사용해야합니까? 당신이 navigationController's 계층 구조의 외부 모달 새로운 viewController을 발표 할 예정이다 presentViewController:animated:completion: 호출 할 때 지금 내 코드는 모든은 UINavigationController의 deinit은 내 <code>UINavigationController</code> 스택의 일부 <code>ViewController</code>에서

let destinationVC = storyboard?.instantiateViewControllerWithIdentifier("revealViewController") as! SWRevealViewController 
self.presentViewController(destinationVC, animated: true, completion: nil) 

답변

1

처음처럼 보인다.

당신이 navigationController 계층 구조를 사용 이내에 제시하고자하는 경우 :

self.navigationController!.pushViewController(destinationVC, animated: true) 

그리고 당신은 변화 뷰 계층하려면 navigationController가 또는 애니메이션없이 설정할 수있는 특성 viewControllers있다.

self.navigationController!.setViewControllers([destinationVC], 
      animated: true) 

자세한 내용은 iOS Developer Library을 참조하십시오.

+0

내 위치에 대한 ViewController가 NavigationController (계층 구조 외부에 있음)에 포함되지 않도록하려는 경우 문제가 발생합니다. 사용자가 앱을 종료 할 때까지는 소개되지 않는 VC가 있습니다. – JuicyFruit

+0

나는 본다! =) _view suits_가 두 개있는 것 같습니다. 내가 할 수있는 것은 애플리케이션'UIWindow'의'rootViewController' 속성을 원하는'viewController'로 설정하거나 다른 * suites * 사이에서 전환을 수행 할 수있는 _baseViewController_를 갖는 것입니다. – Aerows

+0

나는 self.navigationController! .setViewControllerers ([], animated : false)'를'viewDidDisappear' 메소드에 추가하여 문제를 해결했다. 그것이 옳은 접근인지는 모르지만 적어도 그것이 효과가있다. – JuicyFruit