0

アプリの特定のページで向きを変更すると問題が発生します。このshouldAutoRotate関数はどのページでも起動しません。このコードが正しいかどうか誰かが教えてくれることを期待して、掘り下げました。

ウィンドウ、homepageController という名前のナビゲーション コントローラー、および mainController という名前のタブ バー コントローラーがあります。アプリは次のように動作します。ユーザーがログインできるように、homepageController を提示します。正しいログイン キーが入力されたら、ウィンドウからホームページ コントローラ ビューを削除し、mainController ビューを追加します。ここにコードがあります

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.6];
[UIView setAnimationDelegate:self];

[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:appDel.homePageController.view.superview cache:NO];

[appDel.homePageController.view removeFromSuperview];

[UIView commitAnimations];

[appDel.window addSubview:appDel.mainController.view];
[appDel.mainController setSelectedIndex:0];
[appDel.window bringSubviewToFront:appDel.mainController.view];

タブバーの最初のページに移動し、ブレークポイントをオンにして回転させようとしましたshouldAutoRotateが、起動しません。

もう一度掘り下げてみたところ、shouldAutoRotatehomepageController の .m ファイル内のメソッドが、向きを変更するたびにトリガーされることがわかりました。私は自分の xib ファイルを見て、これが私が持っているものです。

ここに画像の説明を入力

私のhomepageControllerはrootViewControllerであり、mainControllerのタブからタブに切り替えるときに、このコードを使用していることがわかりました。

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{

    UINavigationController *nav = (UINavigationController *) viewController;
    [nav popToRootViewControllerAnimated:NO];

}

したがって、私のhomepageControllerがrootViewControllerであることを確認すると、shouldAutoRotate常にそこで呼び出されます。

これに対するより良い解決策があるかどうか疑問に思っています。私はこれを正しく行っているとはまったく思わないので、どんなガイダンスも素晴らしいでしょう。

ありがとうございました

4

1 に答える 1