iOS6shouldAutorotateの奥深くに伝播する正しい方法は何ですかmodal viewcontroller
次の例を考えてみましょう。
Tabbed ApplicationXCode4.5で新しいサンプルを作成します- で、すべての方向
Summaryを選択します 新しいシンプルなものを作成します
UITabBarController。たとえばMyTabBarViewController、コードを追加します- (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskAll; }AppDelegateで、回転をフックするために
UITabBarControllerで置き換えますMyTabBarViewControllerself.tabBarController = [[MyTabBarViewController alloc] init];これで回転が機能するはずです。で、クリック時にモーダル
FirstViewControllerビューコントローラーを表示するコードを追加します-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UIViewController * viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil]; [self presentViewController: [[UINavigationController alloc] initWithRootViewController:viewController2] animated:YES completion:nil]; }
問題:
これで、SecondViewControllerがでラップされているため、SecondViewControllerUINavigationControllerを追加shouldAutorotateしたとしても、逆さまの回転を正しく行うことができません。
唯一の修正は、カスタムを作成してUINavigationController実装することshouldAutorotateであり、これは機能するはずです。
しかし、このアプローチはばかげているように聞こえ、実装してすべてのUIクラスを修正する必要があり、shouldAutorotateなどの省略形を使用できなくなります。[UINavigationController alloc]
initWithRootViewController...これらすべてUITabBarControllerとを実装する必要がありUINavigationControllerます。
より良いアプローチはありますか?