12659


`Storyboard`でUIを配置していく時に、画面右下から`Navigation
Bar`を選択して`ViewController`に配置してみるのですが、`NavigationController`のナビゲーションバーのようになりませんよね？`ViewController`の上に配置しても`NavigationController`のナビゲーションバーと縦のサイズが違いますし、それに`Navigation
Item`を引っ張ってきて配置しても`Navigation Bar`には反映されません。この`Navigation
Bar`は一体何のためにあるのでしょうか？`NavigationController`のナビゲーションバーとは別物と考えたほうがいいでしょうか？


CC BY-SA 3.0
2015-07-23T06:51:49.360
12606
2015-07-25T04:42:04.560
5210
question
ios storyboard navigationbar
StoryboardのNavigation Barの存在理由


自分で設計したコンテナビューコントローラの部品として使うんだよ。UINavigationControllerのスタック方式のシングルビューじゃやってられんて時にコンテンツビューコントローラの管理方法を独自実装すんだよね？バーみたいなコマンドメニューを管理するカスタムビューまで作ってらんないからUINavigationBarやUIToolBarクラスを使うんだよ。UIAppearanceも使えてUINavigationController使ってる画面とも外観統一できて便利じゃない？

* * *

[![画像の説明をここに入力](https://i.stack.imgur.com/NbYI4.png)](https://i.stack.imgur.com/NbYI4.png)


CC BY-SA 3.0
2015-07-23T09:50:44.303
12613
2015-07-24T10:12:22.497
2015-07-24T10:12:22.497
10652
10652
12606
answer


Storyboardが登場してからは、ナビゲーションコントローラと中身のビューコントローラを一緒にInterface
Builderで作ることができるようになったので、Navigation Barを単体で配置するのはレアケースだと思います。

使い方としては、ナビゲーションコントローラは必要ないけど、見た目を同じにしたいとか、上部にバーと閉じるボタンを配置したいとか、そういうときに使います。

特にStoryboardが登場する以前は、ビューに単体でNavigation
Barを配置して、タイトルと左右にボタンを置いて、モーダルビューで表示する、といったときに簡単にInterface
Builderだけで作れて便利とかそんな感じで使います。

似ている例を言うと、Search BarとSearch Display Controllerの関係とか。Search Display
Controllerを使うほどじゃないけど、Search Barを置いて検索できるようにしたいというときはSearch Barだけ使う、のと同じです。

といったものなので、特に今までNavigation Barを使ったことがなくて、それで困っていないなら特に気にすることはありません。

ちなみに、ナビゲーションコントローラを使った場合と比べて高さが異なるというのは勘違いで、iOS
7からステータスバーと一体化した見た目になったのでそのように見えるだけで、ビゲーションコントローラを使ったときと同じ見た目にすることは可能です。  
ビューコントローラにナビゲーションバーをステータスバーの高さだけ下げて設置して、デリゲートを接続して、そのデリゲートで下記のメソッドを実装します。

[code]

    - (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar {
        return UIBarPositionTopAttached;
    }
    
[/code]

ここで`UIBarPositionTopAttached`を返すと、ステータスバーと一体化した見た目にしてくれます。

まとめると、今となっては単体で使うことはあまりないですが、必要ならナビゲーションコントローラを使わないときでも同様の見た目にしたり、ナビゲーションバーの機能を使うことができる、というためにあります。


CC BY-SA 3.0
2015-07-24T14:23:56.523
12659
2015-07-24T14:23:56.523
5519
12606
answer


既出の回答を補足する形で回答します。

NavigationBarの下のビューの背景色が、白色のとき限定の話ですが、NavigationBarを、StatusBarと一体化（したかのように）する、かんたんな方法は、下図のように、Attributes
Inspectorで、 **Translucent**
のチェックを外すことです。見かけだけのテクニックですので、ちゃんとするには、既出回答のように、Delegateで操作してください。

[![画像の説明をここに入力](https://i.stack.imgur.com/83pQE.png)](https://i.stack.imgur.com/83pQE.png)

NavigationBarには、ただひとつのNavigationItemだけ配置できます。Storyboardでは、NavigationBarのパーツには、最初からNavigationItemが配置されています。新たにNavigationItemをドラッグすると、既存のNavigationItemと入れ替わるだけです。  
NavigationBar（の上のNavigationItem）に配置するのは、BarButtonItemです。

[![画像の説明をここに入力](https://i.stack.imgur.com/OW0Fj.png)](https://i.stack.imgur.com/OW0Fj.png)


CC BY-SA 3.0
2015-07-24T18:59:19.560
12665
2015-07-25T04:42:04.560
2015-07-25T04:42:04.560
7362
7362
12606
answer