web-dev-qa-db-ja.com

ナビゲーションバーなしのUINavigationController?

私はユニバーサルアプリを持っています。iPadバージョンでは、UISplitViewControllerを使用して、メールアプリに似たインターフェイスを作成しています。

新しい詳細ビューのプッシュで問題が発生したため、必要に応じてビューをプッシュおよびポップできるようにUINavigationControllerを使用することにしました。ただし、ナビゲーションビューやツールバーは使用したくありません。しかし、私が何をしても、ナビゲーションバーを非表示にすることはできません。

IBの「ナビゲーションバーの表示」のチェックを外してみましたが、設定も試しました。

[self.navigationController setNavigationBarHidden:YES];

viewDidLoad/viewDidAppear/viewWillAppearで。プッシュされる各ビューでも試してみました。何も動作しません。

ここに欠けているものはありますか?ツールバーやナビゲーションバーなしでUINavigationControllerを使用することはできますか?

114
DOOManiac

次のことができるはずです。

self.navigationController.navigationBar.hidden = YES;

ここで、self.navigationControllerは(明らかに)UINavigationControllerのインスタンスです。私にとってはうまくいくようですが、これを投稿する前に簡単にテストしただけです。

186
Ashwin

ナビゲーションバーが不要で、コンテンツを通常のナビゲーションバーの位置まで調整する場合は、使用する必要があります。

self.navigationController.navigationBarHidden = YES;

これにより、次のような結果が得られます。

enter image description here

一方、self.navigationController.navigationBar.hidden = YES;は、navigationBarがある場所を提供します。このような:

enter image description here

39
HalR

Xcode 4.3.2の場合:

  1. ストーリーボードでナビゲーションコントローラーを選択します
  2. (右)ユーティリティパネルで属性インスペクターを選択します
  3. Navigation Controllerカテゴリには、次の2つのチェックボックスがあります。

    []ナビゲーションバーを表示

    []ツールバーを表示します

私のために働いた...

39
Avner

Swift 4

ViewWillAppearで非表示にします

     override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        self.navigationController?.isNavigationBarHidden = true;
    }

その後、セグエをプッシュするときに元に戻すことができます(次のビューで戻るボタンを使用する場合)

     override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
     {
        self.navigationController?.isNavigationBarHidden = false;
     }
7
user1296082

プログラムによるSwift 3

self.navigationController.isNavigationBarHidden = true

または

self.navigationController.navigationBar.isHidden = true

注:iOS 10でテストするこれら2つのアプローチに違いは見られませんでした。

3
Mobile Dan