2

私の mainwindow.xib には、ナビゲーションコントローラーがあります。(サブアイテムとして)上に、別のviewcontroller(homeviewcontroller)があります。

nib では、ウィンドウの rootviewcontroller をこのナビゲーション コントローラーに設定しました。

これはアプリストアにデプロイされ、完全に機能します。

ios6 SDK にアップグレードしてから、方向の問題が発生しています。基本的に、この設計では、ios 6 デバイス/シミュレーターでアプリを実行しているときに、homeviewcontroller の supportedInterfaceOrientations メソッドが呼び出されません。

この問題を解決するには、homeviewcontroller をウィンドウの rootviewcontroller として設定する必要がありますが、これは私が望むものではありません。navigationcontroller が必要です。

iOS6 のこの厄介なバグを回避するにはどうすればよいですか?

アップデート:

私もこれをプログラムで実行しようとしましたが、まだ機能しません。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{        
    HomeViewController *homeVC = [[HomeViewController alloc]init];
    UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:homeVC];
    [self.window setRootViewController:navController];

    [self.window makeKeyAndVisible];

    return YES; 
}
4

3 に答える 3

7

UINavigationController をサブクラス化し、そこで supportedInterfaceOrientations をオーバーライドする必要があります。

于 2012-10-15T10:12:28.657 に答える
1

@ phix23の答えを詳しく説明するために、この小さなUINavigationControllerサブクラスを作成しました

@implementation MyNavigationController

- (NSUInteger) supportedInterfaceOrientations
{
    return [[self topViewController] supportedInterfaceOrientations];
}

@end

彼のコメントで言及されているドキュメントの私の理解から、これはデフォルトの動作であるはずです。しかし、どういうわけかこれは私にとってはうまくいきますが、それがないとうまくいきません

于 2013-02-19T15:59:13.620 に答える
0

実行時にプログラムで実行しますか? (-applicationDidFinishLaunching:デリゲートメソッドで)

于 2012-10-12T16:14:07.903 に答える