5

Xcode 4 でプロジェクトを開始し、今日、Xcode を 5 に更新しました。iOS7 シミュレーターで同じプロジェクトを実行すると、いくつかの興味深い (イライラする) 問題が明らかになりました。

私のアプリには、ユーザーがタップできるサイドバーがあり、タップしたボタンに基づいて、このコードを使用して新しい VC をインスタンス化します。

YMGeneralInfoTableViewController *generalInfoTableVC = [self.storyboard instantiateViewControllerWithIdentifier:@"generalInfoTableVC"];

次に、このコードを使用して、この新しい VC を nav スタックにプッシュします。

[self.navigationController pushViewController:generalInfoTableVC animated:YES];

iOS 6 ではすべて正常に動作していましたが、iOS 7 ではナビゲーション バーが魔法のように消えてしまいました。

これは、新しい VC をプッシュする前のスクリーン ショットです。 ここに画像の説明を入力

押した後は次のとおりです。 ここに画像の説明を入力

ご覧のとおり、navBar があるべき位置で、コンテンツの開始位置と statusBar の間にギャップがあります。

また、iOS 6 デバイスでこのコードを再度テストしましたが、その iOS 6 デバイスではすべて問題ありません。だから私はここで何が起こっているのか分かりません。

また、navbar が消えたコントローラーの navBar/navigationItem をログに記録しようとすると、navBar への正しい参照が取得されます。つまり、nil ではなく、単に表示されません。

ただし、このメソッドでsetHideNavigationBar:NO Animated:NOは navBar も元に戻りませんでした。誰が何が起こっているのか知っていますか?

4

2 に答える 2

1

ところで、私はこれに対する解決策を見つけました。

これは、AppDelegate では、ナビゲーション バーの外観の変更を既に設定している可能性があるためです。

では、Navigation Bar のカスタム外観を設定する前に、まずデバイスの OS を確認することをお勧めします。

- (BOOL)isOS7
{
    float currentVersion = 7.0;

    if ([[[UIDevice currentDevice] systemVersion] floatValue] < currentVersion)
        return NO;

    return YES;
}

したがって、「NO」を返す場合は、使用できることは何でも実行します

于 2013-10-04T03:59:33.730 に答える