0

すべてのビューをポートレート モードにしたいと考えています。UINavigationControllerこれは、 aを別のものにプッシュする場合を除いて機能します。この場合、 内のビューはsecondaryNavigationController代わりにデバイスの向きに従います。を呼び出す方法は次のとおりですUINavigationControllers

[secondaryNavigationController setNavigationBarHidden:YES];
[[appDelegate secondaryNavigationController navigationBar] setHidden:YES];
[mainNavigationController presentModalViewController:[appDelegate secondaryNavigationController] animated:YES];

私のビューはすべてこのメソッドを実装していますが、役に立たないようです。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
4

2 に答える 2

1

注意:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

iOS 6.0 で非推奨になったため。現時点では、UIViewControllers内側UINavigationControllersの 、またはの回転に関するいくつかの問題がありますUITabBarControllers。これを解決するには、あなたのケースでは、をサブクラス化するUINagivationControllerか、そのカテゴリを作成する必要があります (ただし、Apple は最初のものよりも 2 番目のものを推奨しません)。これを使用して(このケースは の場合ですUITabBarControllerが、ロジックは理解できます)、サブクラス化の方法を確認できます。次に、 に対して次の操作を実行できますUIViewControllers

-(BOOL)shouldAutorotate
{
    return YES;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

回転を許可していますが (YES を返します)、UIViewControllerは常に縦向きになります。ここでの論理は、UIViewControllerLandscape 上にある から来た場合、NO を返す場合、あなたのUIViewController, は Landscape にとどまるということです。

于 2012-11-15T07:34:49.313 に答える
0

これが私のために働いた完全な答えであり、iYanivのコメントとJackyBoyの答えから構築されています。

私はiYanivのカテゴリを取得しUINavigationController、カテゴリではなくサブクラスにしました(これはあなたがすべきことです)。UINavigationController *次に、のすべてのインスタンスをに置き換えましたmyUINavigationController *。次に、私のすべてでJackyBoyのスニペットを使用しましたUIViewControllers

/* myUINavigationController.h */

#import <UIKit/UIKit.h>

@interface myUINavigationController : UINavigationController

@end

/* myUINavigationController.m */

#import "myUINavigationController.h"

@interface myUINavigationController ()

@end

@implementation myUINavigationController

-(BOOL)shouldAutorotate
{
    return [[self.viewControllers lastObject] shouldAutorotate];
}

-(NSUInteger)supportedInterfaceOrientations
{
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}

@end
于 2012-12-02T03:32:35.863 に答える