web-dev-qa-db-ja.com

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

テーブルの詳細ビューであるView Controllerがあります。テーブルの行をクリックすると、詳細ビ​​ューが表示されます。詳細ビューはNavigation Controllerに組み込まれているため、Navigation Barの左上にボタンがあり、テーブルに戻ります。ここまでは順調ですね。

詳細ビューを編集できるように、ナビゲーションバーの右側に編集ボタンを追加します。私の計画では、アイテムの詳細を編集できる別のView Controllerをモーダルに追加します。標準的なもの。

ただし、オブジェクトのリストからナビゲーションバーにバーボタンアイテムをドラッグしようとすると、かかりません。代わりに、マウスボタンを離すと、下部のTab Bar Controllerのバーボタンがそのままになります。 (私のナビゲーションスキームにはさまざまなタブが含まれ、各タブにはテーブル、詳細ビューなどが含まれます。)

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

提案をありがとう。

96
user1904273

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

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

これで、シーンの上部にバーボタンが貼り付けられます。

UpdateソリューションはまだXCode 7で動作しますが、より説明的な写真を追加したかったです。念のため、上記の標準名または技術名を実際に知らない人がいます。右側の赤い矢印に注意してください。これらは上記の手順1、手順2を参照しています。また、左の赤い長方形のビューの階層にも注意してください。 enter image description here

155
Wael Showair

厄介なトリック:

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

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

69
Baxter Lopez

ストーリーボードのView ControllerにNavigation Itemが欠けている可能性があります。オブジェクトライブラリからドラッグして、View Controllerにドロップできます。

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

33
user4151918

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

22
Jamal N. Ahmad

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

エディタ->埋め込み-> Navigation Controller

UIBarButtonItemsをナビゲーションバーの両側に問題なく追加できたことを除いて、以前と同じ結果になりました。

8
tallen11

その実際のXcodeの問題。私のために働いた1つのトリックは、左のファイル構造の表示にバーボタンを追加することです。Instaedはビューに直接追加します。それがあなたを助けることを願っています:)

5
Chetan Kumar

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

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

enter image description here

5
Hongyang

私もこの問題を抱えていたので、プロジェクトを閉じて再度開いてください。

4
Hsm

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

3
user2174595

XCodeの癖だと思います。同じ問題がありました。 Xcodeをリセ​​ットし、ストーリーボード上で物事の配置を変更して、最終的にそれを取得する必要がありました。今は機能しています。

3
rotarycuff

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

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

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

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

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

1
Elliott Davies

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

1
SGM

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

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

1
JJ Yu

XCode 8の場合

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

enter image description here

1
emresancaktar

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
Yusuf Kıldan

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

1
reetu

Xcode 10では、この新しいView Controllerに向かうセグエのタイプを「プッシュ(非推奨)」に変更し、この切り替え後に許可されたナビゲーション項目を追加しました。元の目的のセグエタイプに戻すと、ナビゲーション項目は残ります。

0
Mark Lyons

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

0
Nancy

mark Lyonsが言ったように、私は同じソリューションを使用しました。

  • プッシュセグエを最初に使用
  • バーアイテムを追加しました
  • 戻ってセグエを表示する
  • やった
0
HassanBro