web-dev-qa-db-ja.com

セグメンテーション後に表示されるナビゲーションコントローラーにボタンを追加する方法

Storyboardに、Navigation Controllerに組み込まれているView Controllerをセットアップしました。このナビゲーションコントローラーでは、ナビゲーションバーの表示とツールバーの表示をオンにし、シミュレートされたメトリックのナビゲーションバーとツールバーをそれぞれトップバーとボトムバーで有効にしました。次に、View Controllerから別のView Controllerにセグエを「プッシュして表示」します。両方のView Controllerで、Simulated Metricsを同じ方法で設定したため、3つのコントローラーすべてでナビゲーションバーとツールバーの両方が表示されます。

問題は、ナビゲーションボタンとツールバーの両方の最初のView Controllerにバーボタンアイテムを追加できますが、2番目のView Controllerのナビゲーションバーにバーボタンアイテムを追加できないことです。ナビゲーションバーにボタンをドロップすると、代わりにツールバーに追加されます。そして、ナビゲーションバーをダブルクリックしてタイトルを追加することはできません。アウトラインでは、2番目のView Controllerにはナビゲーション項目はありませんが、最初のView Controllerにはあります。

おそらくプログラムでナビゲーションバーにボタンを追加できますが、ストーリーボードで視覚的にボタンを追加したいと思います。私の質問は、このセットアップの何が問題なのか、これはXcodeのバグですか?

enter image description here

enter image description here

43
Jordan H

XCode 6の場合、2番目以降のView ControllerのUINavigationItemは、ストーリーボード内のView Controllerオブジェクトに自動的に追加されません。 UINavigationItemを追加する前に、UIBarButtonItemをそのビューコントローラオブジェクトのナビゲーションバーにドラッグする必要があります。

なぜそのように設計されているのかわかりません。私はこれについて数週間前に発見しただけです。

Xcode 6 UiNavigationItem

90
Ricky

大量のView Controllerがあり、カスタムの自動レイアウト機能がほとんどない場合は、サイズクラスを無効にしてから再度有効にすると、ストーリーボード全体に欠落しているナビゲーションバーがすべて追加されます。

enter image description here

enter image description here

リンクされたカスタム自動レイアウトのものがたくさんある場合は明らかにお勧めできません。

ナビゲーションバーのないUIViewControllerが1つだけの場合は、UINavigationItemをドロップします。

12
William T.

Xcode 7 beta 4/5を使用している場合は、Xcodeを再起動して問題を解決してください

3
jrenouard

この問題にぶつかりましたが、View Controllerを表示するセグエの影響を受けているようです。

セグエの[種類]設定が[表示(プッシュなど)]の場合、アイテムを右上隅にドラッグすることはできません。ただし、「種類」設定を明示的に「プッシュ」に変更した場合は、これを行うことができます。

編集:実際には、「プッシュ」が非推奨になったことに気付いただけです。ここで何がAppleが考えているのかわかりません。ただし、ボタンを追加した後、「表示」に戻すだけで機能します:D

1
ooxio

とても簡単です。最初にボタンのホルダーとしてnavigaitonItemを使用するだけで、その上にbarButtonItemsを追加できます。

0
emido333

これはバグだと思います。同じ問題がありました。サイズクラスを無効にしてから有効にすることで、この問題を修正しました。

Interface Builder docでサイズクラスを無効または有効にできます。

enter image description here

0
Hongyang

階層内の2番目のView Controllerの場合、「ナビゲーションアイテム」を追加せずに、属性にタイトルを設定できます enter image description here

0
Daniil Bystrov