ストーリーボードを使用してIOS5用に開発している場合、これは同じ問題が発生した場合に役立ちます。通常、ストーリーボードの前に、TabBarControllerをuiviewまたはappdelegateに追加します。ストーリーボードでは、ストーリーボードビューを必ずしもビューコントローラに接続する必要はありません。
これを修正するには
サブクラスフィールドタイプ UITabBarControllerに新しいクラスファイルobjective-cクラスを追加します
1-ストーリーボードでタブバーコントローラービューを選択します
2-カスタムクラスの下で、 UITabBarControllerを新しく作成したクラス名に変更します。私はMainTabBarViewControllerと呼びました。
3-新しく作成したクラスでこれを変更します
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
に
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if (interfaceOrientation == UIInterfaceOrientationPortrait)
return YES;
if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
return YES;
return NO;
}
基本的に何が起こっているのかというと、Interface Builderで構造を作成しているのですが、それは途中でしかできません。この場合でも、コンパニオンコードを作成する必要があります。私は.xibを使用して最初からビューを構築することに慣れており、通常はappdelegateからタブバーコントローラーを構成するため、これは最初は混乱しました。
また、このようにこれらのそれぞれを条件付きで制御することができます
if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
return NO;
if (interfaceOrientation == UIInterfaceOrientationLandscapeRight)
return NO;
if (interfaceOrientation == UIInterfaceOrientationPortrait)
return YES;
if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
return YES;
必要なものについてはyesを返し、不要なものについてはnoを返します。またはすべてを受け入れるにはyesを返します。