これまでのところ、自分の状況に対応するものは見つかりませんでした...
参考までに、ストーリーボードを使用してiOS5用に開発しています。
2つのビューを持つタブバーコントローラーがあります(タブ1とタブ2と呼びましょう)。また、アプリケーションの使用中にデバイスが回転するたびに使用されるタブバーのない別の横向きのビューもあります。このビューとの間で切り替えるには、手動で起動したセグエを使用します。また、横向きのビューでNSStringを使用して、どのタブから来ているのかを確認し、縦向きに戻ったときにタブを修正します。これまでのところ、これは正常に機能します。ランドスケープモードに出入りすることができます。shouldAutorotateToInterfaceOrientation
私の問題は:
アプリを起動すると、縦向きでタブバーが表示されます。風景に行くと消えてしまいます。これは問題ありません。ストーリーボードで行ったことです。しかし、ポートレートに戻ると、タブバーが戻りません。それが問題です。
編集:ローテーションを呼び出すコード
shouldAutorotateToInterfaceOrientation
カスタムセグエと競合していたため、回転の使用を停止しました。タブバーの問題は以前ここにあったので、これは問題ではありません。代わりに使用didRotate
します。
これがからのコードですFirstViewController.m
(同じコードでSecondViewController.m
、私のセグエ識別子を変更します):
-(void)didRotate:(NSNotification *)notification
{
UIInterfaceOrientation newOrientation = [[UIDevice currentDevice] orientation];
if ((newOrientation == UIInterfaceOrientationLandscapeLeft || newOrientation == UIInterfaceOrientationLandscapeRight))
{
[self performSegueWithIdentifier: @"Page1ToLandscapeSegue" sender: self];
}
}
そしてfrom LandscapeViewController.m
(previousView
はNSStringであり、横向きになる前に設定されているので、どのビューから来ているのかがわかります):
-(void)didRotate:(NSNotification *)notification
{
UIInterfaceOrientation newOrientation = [[UIDevice currentDevice] orientation];
if (newOrientation == UIInterfaceOrientationPortrait)
{
if ([previousView isEqualToString: @"View1"]) {
[self performSegueWithIdentifier: @"LandscapeToPage1Segue"
sender: self];
}
else if ([previousView isEqualToString: @"View2"]) {
[self performSegueWithIdentifier: @"LandscapeToPage2Segue"
sender: self];
}
}
}