私は次の問題に直面しています:私のアプリには2つのメインコントローラー(a)loginControllerと(b)contentControllerがあります。アプリの起動時に、ユーザーがログインしているかどうかを確認します。はいの場合はcontentControllerを表示し、そうでない場合はログインコントローラーを表示します。したがって、基本的に、didFinishLaunchingWithOptionsで、このコントローラーの1つをwindow.rootViewControllerに割り当てます。問題は、これを達成するために1つのコントローラーから別のコントローラーに切り替えたい場合(ユーザーがログインまたはログアウトしたため)、次のコードを使用することです。
[UIView transitionWithView:self.window
duration:0.65
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
self.window.rootViewController = self.contentController;
}
completion:^(BOOL finished){
[self.loginController release];
}];
この遷移window.rootViewControllerがloginControllerになる前の問題は、このコードを実行すると次のエラーが発生することです。
-[loginController _preferredInterfaceOrientationGivenCurrentOrientation:]: message sent to deallocated instance 0x1c55b490
このエラーが発生せずにコントローラーを解放する方法を理解したいと思います。実行時にwindow.rootViewControllerを変更するための最良のアプローチを誰かが私に提案してくれると、それも素晴らしいことです。