xcode / storyboard:上部のツールバーにバーボタンをドラッグできません


99

テーブルの詳細ビューであるビューコントローラーがあります。テーブルの行をクリックすると、詳細ビ​​ューが表示されます。詳細ビューはナビゲーションコントローラに埋め込まれているため、ナビゲーションバーの左上に、テーブルに戻るボタンがあります。ここまでは順調ですね。

次に、ナビゲーションバーの右側に編集ボタンを追加して、詳細ビューを編集できるようにします。私の計画では、これにより、アイテムの詳細を編集できる別のビューコントローラーがモーダルに追加されます。標準的なもの。

ただし、オブジェクトのリストからナビゲーションバーにバーボタンの項目をドラッグしようとしても、実行されません。代わりに、マウスボタンを離すと、タブバーコントローラーのバーボタンが下部に残ります。(私のナビゲーションスキームにはさまざまなタブが含まれており、各タブにはテーブル、詳細ビューなどがあります。)

誰もがこれに遭遇し、私が間違っていることや、ナビゲーションボタンの右側にバーボタンの項目を追加するための何らかの回避策を提案できます。コードに追加する必要がありますか?

提案をありがとう。


次のチュートリアルbrianflove.com/2012/10/01/…を
casillas

self.navigationItem.rightBarButtonItem = self.editButtonItem;を使用してボタンを追加できました。ストーリーボードに新しいeditvcを作成しましたが、セグエの作成方法がわかりません。編集ボタンが表示されていないので、ストーリーボードでは実行できません。コード内にある必要があると思います。prepareforsegueを試しますか?
user1904273

答えの1つがあなたを助けたなら、あなたはそれを受け入れるべきです:)

回答:


157

Xcode6を使用して同じ問題が発生しました。NavigationControllerに埋め込んだ最初のViewControllerにはUINavigationItemが自動的に追加されますが、後続のViewControllersの場合は、次のように手動で追加する必要があります。

  1. オブジェクトライブラリでナビゲーションアイテムを見つけ、ストーリーボードの2番目のViewControllerにドラッグします。
  2. オブジェクトライブラリでバーボタンアイテムを見つけ 、前の手順で作成したナビゲーションアイテムをドラッグします。

これで、バーボタンがシーンの最上部に固定されます。

更新 このソリューションは引き続きXCode 7でも機能しますが、さらに説明的な写真を追加したいと思いました。上記の標準名や技術名に慣れていない人のために。右側の赤い矢印に注目してください。これらは上記のステップ1、ステップ2を参照しています。左側の赤い長方形のビューの階層にも注意してください。 ここに画像の説明を入力してください


2
はい、それは私のためにそれをしました。これは正解だと思います。XCodeはナビゲーション項目を後続のViewControllersに追加しないようです。
Jeremy Chone

これは正しいですが、画像の赤い矢印は、オブジェクトライブラリのバーボタン項目から左の赤いボックスに移動する必要があります。
Malhal 2017年

キャンバスにドロップするか、赤い矢印で示すようにドロップするか、提案したようにドキュメントのアウトラインにドロップできます。違いはありません
ワエルショーエアー2017年

この答えは素晴らしいので見つけたので嬉しいです。UINavigationItemがStoryboardにまだないのに困惑しています。コードself.navigationItem.rightBarButtonItem = ...が機能するので、実行時に明らかに存在します。最初のVCのUINavigationControllerは、スタックにプッシュされる後続のすべてのVCに対してインスタンス化されると思います。しかし、手動で1つをドラッグして、2つのUINavigationItemを重ねて表示してみませんか?手動でドラッグしたものと、UINavigationControllerからすでにそこにあるものですか?
James Toomey 2017年

70

厄介なトリック:

  1. セグエをプッシュに変更します。
  2. 必要なコンテンツを設定
  3. 表示に戻る

その後、コンテンツは編集可能になり、セグエの非推奨のスタイルがあります。


男、とても醜い。しかし、これUIBarButtonItemXcode 7.3のビューコントローラーで機能します
mikeho

OMG、XCode 8.2.1でも動作しています。いつ修正されますか?決して、おそらく
Dima Rostopira

これは、コードで追加せずに見つけた唯一の方法です。
ジョシュア

ああ、神様…ありがとう(y)
Nasir Khan

このバグが2年以上経ってもまだここにあるとは信じられません
Carioni

33

ストーリーボードのビューコントローラーにがありませんNavigation Item。オブジェクトライブラリから1つをドラッグして、ビューコントローラにドロップできます。

その後、バーボタン項目をナビゲーションバーの左側または右側にドラッグアンドドロップできます。


1
これは機能しましたが、コントローラーにプッシュセグエがある限り、これは自動的に行われていたように感じます
aryaxt

これが正解です。残りは私にとってハックのようです
MK Yung

23

私はそれを解決しました。「ナビゲーションアイテム」を詳細ビューにドラッグします。バーボタンアイテムでドラッグするよりも。


8

この問題を修正した方法は、UINavigationControllerをStoryboardにドラッグしてUIBarButtonItemsを追加しようとする代わりに、UITableViewControllerをドラッグしてから、

エディター->埋め込み->ナビゲーションコントローラー

以前と同じ結果が得られましたが、UIBarButtonItemsをナビゲーションバーの両側に問題なく追加できました。


上がるべきだ!!
Vin

5

実際にはxcodeの問題です。私にとってうまくいったトリックの1つは、左にあるファイル構造を表示にバーボタンを追加することです。それがあなたを助けることを願っています。


これでうまくいきます!AppleがXcode 8.2でバグを修正する限り、これが解決策だと思います
Arjun Kalidas

5

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

Interface Builderドキュメントでサイズクラスを無効または有効にできます。

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


4

私もこの問題を抱えていたので、プロジェクトを閉じて再度開くとうまくいきました。


3

XCodeの癖だと思います。同じ問題がありました。Xcodeをリセ​​ットし、ストーリーボード上の配置をシフトして、最終的にそれを実行する必要がありました。それは今働いています。


3

これはXcodeのバグだと思います。Xcode 8ではsegue、タブバービューコントローラーの前のストーリーボードをすべてのオプション(show detailpresent...)に変更します。次にに戻りshowます。バーボタンアイテムをドラッグしてタイルを変更してみてください。わたしにはできる!


1

プロジェクトを「クリーンアップ」してみましたか?私はそれが時々助けになることを知っています( "製品"> "クリーン"に行くだけです)。または、ナビゲーションバーを削除して、もう一度お試しください。

プログラミングエラーだと思われる場合は、コードを渡してください。できる限りのお手伝いをさせていただきます。:)


1

xCode IDEをリセットする必要があります。xCodeを閉じて、ターミナルで以下のコードを書きます...それは動作します。

rm -rf $HOME/Library/Application Support/Developer/Shared/Xcode
rm -rf $HOME/Library/Preferences/com.apple.dt.Xcode.*
rm -rf $HOME/Library/Saved\ Application\ State/com.apple.dt.Xcode.savedState
rm -rf $HOME/Library/Developer/Xcode

1

同じ問題。ナビゲーションコントローラー内にテーブルビューコントローラーがあり、さらにチェーンを下っていくと、多くのビューコントローラーがありました。最初のルートビューコントローラー用に「ナビゲーションアイテム」が自動的に作成されていましたが、これに「バーボタンアイテム」を問題なく追加できました。ストーリーボードを介して、ドラッグアンドドロップします。しかし、それだけです。次のテーブルビューコントローラーおよびその他のビューコントローラーでは、最初のナビゲーションコントローラー内にあるにもかかわらず(自動生成された戻るボタンが表示されました)、ストーリーボードでバーボタンアイテムを追加できませんでした。

Wael Showairのソリューションは私にとってはうまくいきませんでした。バーボタンアイテムは表示されません。

最後にプログラムでそれを解決しました(Swift 2.0):

var testButton = UIBarButtonItem(title: "Test Button", style .Plain, target: self, action: "testButtonMethod")
self.tabBarController?.navigationItem.rightBarButtonItem = testButton

追加のナビゲーションアイテムやバーボタンアイテムは必要ありません。


1

私も同じ問題に直面していました。ルートビューコントローラーオプションを選択することでこの問題を修正でき、シミュレーションマトリックスでトップバーオプションを不透明なナビゲーションバーに変更し、ナビゲーションバーの上にアイテムを追加できました。この答えは誰かを助けるでしょう。


1

xcode 8でも同じ問題が発生しました。xcodeを閉じてプロジェクトを再び開くだけで、問題なくルートコントローラーにバーボタンを追加できました。


1

XCode 8の場合

ここには多くの答えがあります。いくつか試してみましたが、うまくいきませんでした。だから私は私の解決策を見つけました、あなたのを選択し、属性インスペクターセクションViewControllerに行き、トップバー不透明なナビゲーションバーとブームに変更してください。ストーリーボードにナビゲーションバーが表示されます。タイトルを変更したり、アイテムを追加したりできます。Opaqueを保持したくない場合は、スタイルをInferredに変更できます。

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


1

Xcode 10では、この新しいビューコントローラーに移動するセグエのタイプを「プッシュ(非推奨)」に変更し、この切り替えを行った後に許可されていたナビゲーション項目を追加しました。元の目的のセグエタイプに戻すと、ナビゲーションアイテムは残ります。


0

「バーボタンアイテム」を「ナビゲーションコントローラ」にドラッグする代わりに、「詳細ビューコントローラ」にドラッグします。詳細ビューを「ナビゲーションビュー」に埋め込むと、「ナビゲーションアイテム」が「詳細ビューコントローラ」に追加されます。「バーボタンアイテム」をナビゲーションアイテムの右側にドラッグすると、「右バーボタンアイテム」の下に含まれます。


0

マーク・ライオンズが言ったように、私は同じ解決策を使いました。

  • 最初にプッシュセグエを使用
  • バーアイテムを追加しました
  • セグエを示すために戻る
  • できた

0

Xcode 11では、ボタンをナビゲーションバーにドラッグして、バーボタンを作成できます。

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