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


117

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

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

IBで「Shows Navigation Bar」のチェックを外してみました。また、次の設定も試しました。

[self.navigationController setNavigationBarHidden:YES];

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

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


selfインスタンスのクラスのスーパークラスは何ですか?

回答:


192

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

self.navigationController.navigationBar.isHidden = true //Swift 5

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


2
したがって、あなたの場合、self.navigationController.navigationBar.hidden = YES;
アシュウィン

4
やった!コードを使用する代わりに、IBのNagivationツールバーの[非表示]チェックボックスをオンにすることができたと付け加えておきます。ありがとう!
DOOManiac 2011

1
うん、ごめんなさい。私はあなたがIBを使用していて、コードを使用する代わりに隠しボックスに言及しているという事実に気付いたはずです。私は最近、すべてのインターフェイスを完全にプログラムで.xibファイルなしで作成することに熱心でした。
アシュウィン、2011

5
私はこれを私のようなビューコントローラーのviewwillapearにあるように呼び- (void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBar.hidden = YES; } 、それは機能します
Ali

2
navBarは非表示になっていますが、ビューコントローラー画面が全画面に拡張されません
ArdenDev

40

ナビゲーションバーが不要で、コンテンツを通常のナビゲーションバーの位置まで調整したい場合は、

self.navigationController.navigationBarHidden = YES;

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

ここに画像の説明を入力してください

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

ここに画像の説明を入力してください


iOS 6での結果の違いに関する非常に優れた区別。IOS7の時点では、スペースが削除されているようですが、多くの人がそうであることを確認するまでお待ちください。
Alex Zavatone 2014

39

Xcode 4.3.2の場合:

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

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

    []ツールバーを表示

私のために働いた...


8

スウィフト4

ビューで非表示にします

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

        self.navigationController?.isNavigationBarHidden = true;
    }

その後、セグエを押すと元に戻すことができます(次のビューに戻るボタンを配置する場合)

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

3

プログラムによるSwift 3

self.navigationController.isNavigationBarHidden = true

または

self.navigationController.navigationBar.isHidden = true

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


1

これらすべての答えは、ステータスバーの上部にスペースを残します-この行を追加して、それも削除します。

navController.navigationBar.isHidden = true
navController.accessibilityFrame = CGRect.zero
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.