🏠

iOSのナビゲーションバーは誰のもの?

に公開

iOSのナビゲーションバーは誰のもの?

iPhoneアプリを使っていると、画面上部にある帯状のバー。これが「ナビゲーションバー」です。
多くのアプリで画面の上部に表示されていて、タイトルや戻るボタンが配置されています。
このナビゲーションバー、実は誰のものなのか考えたことはありますか?

誤解されがちなナビゲーションバーの正体

アプリを操作していると、画面が切り替わるたびにナビゲーションバーの内容も変わります。
このため「各画面がそれぞれ自分専用のナビゲーションバーを持っている」と思いがちです。

ナビゲーションバーの本当の持ち主

ナビゲーションバーは、実は「ナビゲーションコントローラ」という、画面遷移を管理する仕組みの一部です。各画面(「ビューコントローラ」と呼びます)が自分専用のナビゲーションバーを持っているわけではありません。

これを住宅に例えるとわかりやすいかもしれません

  • ナビゲーションコントローラ = 1軒の家
  • ナビゲーションバー = その家の屋根
  • ビューコントローラ(各画面) = 家の中の部屋

あなたが部屋から部屋へと移動しても、屋根は同じ一つの屋根のままです。見える天井(ナビゲーションバーの内容)は部屋ごとに違って見えますが、実際の屋根(ナビゲーションバー自体)は家全体で一つなのです。

具体的な構造

ナビゲーションコントローラは、以下のような構造になっています

  1. 最上部に一つのナビゲーションバーがある
  2. その下に「画面のスタック」がある(重ねられたカードのイメージ)
  3. 一番上の画面だけが見えている

ナビゲーションコントローラの構造
メンバーの詳細画面が右から左にスライドして表示される例。このとき、ナビゲーションバーは変わらず同じものが使われています。

画面を切り替えると、新しい画面がスタックの一番上に追加され、ナビゲーションバーの「内容」(タイトルやボタンなど)は更新されますが、ナビゲーションバー自体は同じものが使われ続けます。

Discussion