0

奇妙な問題はiOS6.0でのみ発生します。UISplitViewControllerに基づくアプリのiPadポートレートモードでは、マスタービューはナビゲーションコントローラーに基づいています。マスタービューの最初のビューコントローラーにはツールバーボタンが表示されます。2番目のビューコントローラーを押してツールバーを非表示にすると、2番目のビューコントローラーをポップした後、最初のビューコントローラーのツールバーのボタンが永久に失われます(つまり、 、空白のツールバーが表示されました)。ツールバーボタンは、最初のViewControllerのviewDidLoadで初期化されます。また、2番目のビューコントローラのviewDidLoadで[self.navigationController setToolbarHidden:YES]を呼び出すとツールバーが非表示になり、最初のビューコントローラのviewWillAppearで[self.navigationController setToolbarHidden:NO]を呼び出すとツールバーが再び表示されました。

なにか提案を?そして、ナビゲーションコントローラーのツールバーを非表示/再表示する正しい方法は何ですか?

ちなみに、iOS 4.3、5.1.1では問題なく、iPadのiOS6.0ランドスケープモードでは問題ありません。この問題は、iPadのiOS6.0ポートレートモードでのみ発生します。

編集:iPhone、iOS 6.0では、同じ問題。ただし、iOS6.0を搭載したiPadのランドスケープモードでは問題ありません。

4

1 に答える 1

1

この問題は iOS 6.0 の iPhone でも発生するため、UISplitView の縦表示とは関係ない可能性があります (ただし、UISplitView の横表示は問題ありません)。

そこで、UINavigationController のツールバーの表示/非表示に注目し、このスレッド (ナビゲーション コントローラーのツールバー) で問題を解決しました。

viewDiDLoad と viewWillAppear の setToolBarHidden コードを削除し、UINavigationController デリゲート プロトコルを実装しました。

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    BOOL shouldHide = [viewController.toolbarItems count] == 0;
    [navigationController setToolbarHidden:shouldHide animated:animated];
}

今では動作します。しかし、元のコードが iOS 6.0 の iPhone と iPad のポートレート モードで機能しない理由はまだわかりません。

于 2012-09-23T02:21:45.843 に答える