0

私はstackoverflowとobjective-Cプログラミングが初めてです。以下で説明する問題を検索しましたが、有効な解決策が見つかりません。

私のアプリケーションは、ナビゲーション構造を備えた単純なオフライン ブラウジング アプリです。appDelegate では、次のいずれかの方法で RootViewController (UITableViewController) をロードします。

ソリューションA

   [window addSubview:navigationController.view];
   [window makeKeyAndVisible];
   return YES;

ソリューションB

   RootViewController* rootviewcontroller = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];    
   navigationController = [[UINavigationController alloc] initWithRootViewController:rootviewcontroller];

rootViewController は単にいくつかのビューをプッシュします。

 TipAndTrickViewController *mTipAndTrick = [[TipAndTrickViewController alloc]initWithNibName:@"TipAndTrickViewController" bundle:nil]; 
 [self.navigationController pushViewController:mTipAndTrick animated:YES];

より深いビューでは、詳細な modalView (UIViewController) を提示します。私が望むのは、この最後のビューでのみ自動回転を有効にすることです。ポートレートの向きは、以前のすべてのビューに適しています。最後のビューは正しい方法で実装されています:

shouldAutorotateToInterfaceOrientation:interfaceOrientation

自動回転する必要があります

willRotateToInterfaceOrientation:toInterfaceOrientation 期間:期間

willAnimateRotationToInterfaceOrientation:interfaceOrientation 期間:期間

オーバーライド

自動回転する必要があります

shouldAutorotateToInterfaceOrientation:interfaceOrientation

rootViewController で NO/YES を返すようにし、許可された向きを希望の方法で設定します。

サポートされているインターフェイスの向き

(rootViewCONtroller と最後のビューの両方で)、次の結果が得られます。

  • ソリューションAを使用すると、すべてのビューが回転しません。
  • ソリューションBを使用すると、すべてのビューが常に回転します。

私は間違った方法で何をしていますか?よろしくお願いいたします。

4

1 に答える 1

0

これらをviewControllerに追加して、動作するかどうか教えてください。

// iOS5 回転

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

// iOS6 回転

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}

- (BOOL)shouldAutorotate
{
    return YES;
}
于 2013-04-27T05:22:13.927 に答える