2014-09-17 1 views
-3

내 앱의 구조는 다음과 같습니다. MainController와 LoginController가 포함되어 있습니다. 사용자가 앱을 lanuch하면 가장 먼저 로그인 상태를 판단합니다. 그것은 네, 그렇다면 사용자가 사용자 이름과 암호를 올바르게 입력 할 때 RootViewController (일명 NavigationController)에 childController (aka.LoginController)를 설정하고 RootViewController (일명 NavigationController)에 childController (aka.MainController)를 설정하고 childController (aka.MainController) RootViewController의 (일명,있는 navigationController)에보기가 현재 나타나지 않는 모달보기 컨트롤러를 닫으려고하면

사용자는 다음, MainController에 속하는 설정 컨트롤러의 버튼을 종료 클릭하면 :

LoginController *vcLogin = [[LoginController alloc] init]; 
UINavigationController *ncRoot = [[UINavigationController alloc] initWithRootViewController:vcLogin]; 
[[UIApplication sharedApplication].keyWindow setRootViewController:ncRoot]; 

이제 콘솔에 다음과 같은 문제가 발생합니다. 보기가 현재 나타나지 않는 모달보기 컨트롤러를 닫으려고합니다.

self = <_UIModalItemAppViewController: 0x9da0060> modalViewController =<_UIModalItemsPresentingViewController: 0x9e9bac0> 

어디에서 잘못 되었습니까?

답변

0

이것은 새로운 UIViewController를 설정하는 방법이 아닙니다. 현재보기 컨트롤러를 사용하려면 presentViewController를 사용해야합니다. 또한 애니메이션없이 pushViewController를 사용하려는 경우 가능합니다. 그러나 rootViewController를 변경하는 것은 나쁜 생각입니다. ViewController 계층 구조가 iOS에서 설정되는 방식이 아니기 때문입니다.

+0

고마워요.하지만 밀어 넣기를 사용하고 싶지 않습니다. 반복해서 밀어 넣기를 사용하면 스택이 커지고 커집니다. 메모리가 차지하는 공간이 커지고 사용자 계정을 종료하고 싶습니다. loginController로 건너 뛰고 다시 시작하면 앱의 첫 번째 사용법처럼 mainController가 할당 해제되며 사용자가 이름을 입력하고 제대로 pwd하면 mainController를 다시 할당합니다. 감사합니다. – Temeier

+0

돌아갈 때 popViewController를 사용해야합니다. 그런 다음 새 것을 다시 누릅니다. – Sjors

관련 문제