xcode / storyboard: tidak dapat menyeret tombol bar ke toolbar di bagian atas

99

Saya memiliki pengontrol tampilan yang merupakan tampilan detail dari sebuah tabel. Saat Anda mengklik baris tabel, Anda akan dibawa ke tampilan detail. Tampilan detail disematkan di pengontrol navigasi sehingga ada tombol di kiri atas bilah navigasi yang mengirim Anda kembali ke tabel. Sejauh ini baik.

Sekarang saya ingin menambahkan tombol edit ke sisi kanan bilah navigasi sehingga Anda dapat mengedit tampilan detail. Rencana saya adalah ini akan menambahkan pengontrol tampilan lain secara sederhana yang memungkinkan Anda mengedit detail item. Barang standar.

Namun, ketika saya mencoba menyeret item tombol bilah dari daftar objek ke bilah navigasi, tidak akan diperlukan. Sebaliknya, ketika saya melepaskan tombol mouse, tombol bar akan tersisa di pengontrol tab bar di bagian bawah. (Skema navigasi saya mencakup tab yang berbeda dan untuk setiap tab tabel, tampilan detail, dll.)

Siapapun pernah mengalami ini sebelumnya dan dapat menyarankan apa yang saya lakukan salah atau semacam solusi untuk menambahkan item tombol bar ke sisi kanan layar navigasi. Apakah saya harus menambahkannya dalam kode?

Terima kasih atas sarannya.

pengguna1904273
sumber
Periksa tutorial berikut brianflove.com/2012/10/01/…
casillas
Saya dapat menambahkan tombol menggunakan self.navigationItem.rightBarButtonItem = self.editButtonItem; dan membuat editvc baru di storyboard, namun saya tidak yakin cara membuat segue. Tidak bisa dilakukan di storyboard karena tombol edit tidak terlihat jadi saya rasa itu harus dalam kode. akan mencoba mempersiapkannya?
pengguna1904273
Jika salah satu jawaban membantu Anda, Anda harus menerimanya :)

Jawaban:

157

Saya mendapatkan masalah yang sama saat menggunakan Xcode6 dan saya perhatikan bahwa UINavigationItem ditambahkan secara otomatis untuk ViewController pertama yang Anda sematkan ke NavigationController tetapi untuk ViewControllers berikutnya, Anda harus menambahkannya secara manual sebagai berikut:

  1. Di pustaka Objek, temukan Item Navigasi lalu seret ke ViewController kedua di storyboard.
  2. Di perpustakaan Objek, temukan Item Tombol Bar lalu seret item navigasi yang telah Anda buat di langkah sebelumnya.

Sekarang Anda akan memiliki Tombol Bar yang menempel di bagian atas layar Anda.

Perbarui Solusinya masih berfungsi dengan XCode 7 tetapi saya ingin menambahkan foto yang lebih deskriptif. Untuk berjaga-jaga jika ada yang tidak terlalu mengenal nama standar atau teknis yang disebutkan di atas. Perhatikan panah merah di sebelah kanan, mereka mengacu pada langkah 1, langkah 2 yang disebutkan di atas. Perhatikan juga hierarki tampilan pada persegi panjang merah kiri. masukkan deskripsi gambar di sini

Wael Showair
sumber
2
Ya, itu berhasil untuk saya. Saya pikir ini adalah jawaban yang benar, XCode sepertinya tidak menambahkan Item Navigasi ke ViewControllers berikutnya.
Jeremy Chone
ini benar tetapi panah merah pada gambar harus pergi dari item tombol bar di perpustakaan objek sampai ke kotak merah kiri.
malhal
Anda dapat menjatuhkannya di kanvas serta ditunjukkan oleh panah merah atau Anda dapat menjatuhkannya di kerangka Dokumen seperti yang Anda sarankan. Tidak ada bedanya
Wael Showair
Senang sekali saya menemukan jawaban ini karena berfungsi dengan baik - saya hanya bingung mengapa UINavigationItem belum ada di Storyboard? Ini jelas ada saat runtime, karena kodenya self.navigationItem.rightBarButtonItem = ...akan berfungsi. Saya menebak UINavigationController pada VC pertama memberi contoh untuk semua VC berikutnya yang didorong ke tumpukan. Namun, dengan menyeret satu item di sana secara manual, mengapa Anda tidak berakhir dengan 2 UINavigationItems di atas satu sama lain? Yang Anda seret secara manual, dan yang sudah ada dari UINavigationController?
James Toomey
70

Trik jahat:

  1. Ubah gerakan Anda untuk mendorong.
  2. Atur konten yang Anda butuhkan
  3. Atur kembali untuk ditampilkan

Kemudian konten akan dapat diedit dan Anda memiliki gaya yang tidak usang untuk segue.

Baxter Lopez
sumber
Man, sangat jelek. Tapi ini bekerja untuk UIBarButtonItempengontrol tampilan di Xcode 7.3 .
mikeho
Ya ampun, masih berfungsi di XCode 8.2.1. Kapan itu akan diperbaiki? Mungkin tidak pernah
Dima Rostopira
Ini adalah satu-satunya cara yang saya temukan tanpa menambahkannya dengan kode.
Joshua
Ya Tuhan ... Terima kasih (y)
Nasir Khan
Saya tidak percaya bahwa bug ini masih ada setelah lebih dari 2 tahun
Carioni
33

Pengontrol tampilan storyboard Anda mungkin tidak memiliki file Navigation Item. Anda dapat menyeret satu dari perpustakaan Objek, dan menjatuhkannya pada pengontrol tampilan Anda.

Anda kemudian akan dapat menarik dan melepas item tombol bar ke sisi kiri atau kanan dari bar navigasi.


sumber
1
ini berfungsi, tetapi saya merasa ini biasanya dilakukan secara otomatis selama Anda memiliki segue push ke pengontrol
aryaxt
Ini harus menjadi jawaban yang benar. Sisanya tampaknya diretas untuk saya
MK Yung
23

saya memecahkannya. seret 'Item Navigasi' ke tampilan detail Anda. daripada yang bisa Anda seret di Item Tombol Bar.

Jamal N. Ahmad
sumber
8

Cara saya memperbaiki masalah ini adalah, alih-alih menyeret UINavigationController ke Storyboard dan mencoba menambahkan UIBarButtonItems ke sana, saya menyeret UITableViewController dan kemudian pergi ke

Editor-> Sematkan Dalam-> Pengontrol Navigasi

Yang memberikan hasil yang sama seperti sebelumnya, kecuali saya bisa menambahkan UIBarButtonItems ke kedua sisi bilah navigasi tanpa masalah.

mempertinggi11
sumber
Kamu harus naik !!
Vin
5

Ini sebenarnya masalah xcode. Salah satu trik yang berhasil bagi saya adalah menambahkan tombol bar di VIEW FILE STRUCTURE ON THE LEFT. Termasuk menambahkan tampilan secara langsung. Semoga membantu Anda. :)

Chetan Kumar
sumber
Ini bekerja! Saya kira ini adalah solusinya selama Apple memperbaiki bug dengan Xcode 8.2
Arjun Kalidas
5

Saya pikir itu adalah bug. Saya memiliki masalah yang sama, saya memperbaiki masalah ini dengan menonaktifkan kelas ukuran, lalu mengaktifkannya.

Anda dapat menonaktifkan dan mengaktifkan kelas ukuran dalam dokumen Pembuat antarmuka.

masukkan deskripsi gambar di sini

Hongyang
sumber
4

Saya juga mengalami masalah ini, tutup dan buka kembali proyek yang berhasil untuk saya.

Hsm
sumber
3

Saya yakin ini adalah permainan kata-kata Xcode. Saya memiliki masalah yang sama. Saya harus mengatur ulang Xcode dan menggeser penempatan hal-hal di papan cerita untuk akhirnya menyelesaikannya. Ini bekerja sekarang.

rotarycuff
sumber
3

Saya pikir ini adalah bug Xcode. Di Xcode 8, ubah seguedi storyboard sebelum pengontrol tampilan bilah tab ke semua opsinya ( show detail, present...). Kemudian kembali ke show. Cobalah untuk menyeret item tombol bar dan memodifikasi ubin. Ini berhasil untuk saya!

pengguna2174595
sumber
1

Apakah Anda mencoba "membersihkan" proyek Anda? Saya tahu itu terkadang membantu saya (cukup buka "Produk"> "Bersih"). Atau, sebagai alternatif, hapus bilah navigasi dan coba lagi.

Jika menurut Anda itu adalah kesalahan pemrograman, jangan ragu untuk meneruskan kode Anda. Saya akan dengan senang hati membantu sebisa saya. :)

JJ Yu
sumber
1

Anda harus mengatur ulang xCode IDE. Tutup xCode dan tulis kode di bawah ini di terminal ... Ini akan berhasil.

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
Yusuf Kildan
sumber
1

Masalah yang sama. Saya memiliki Pengontrol Tampilan Tabel di dalam Pengontrol Navigasi dan banyak ViewControllers mengikuti lebih jauh ke bawah rantai. Sebuah 'Item Navigasi' sedang dibuat secara otomatis untuk pengontrol tampilan root PERTAMA dan saya dapat menambahkan 'Item Tombol Bar' untuk ini tanpa masalah. Melalui Papan Cerita, seret dan lepas. Tapi itu saja. Pada Pengontrol Tampilan Tabel berikut dan pengontrol tampilan lebih lanjut, meskipun mereka berada dalam Pengontrol Navigasi awal (tombol kembali yang dibuat otomatis muncul), storyboard tidak akan mengizinkan saya menambahkan Item Tombol Bar.

Solusi Wael Showair tidak berhasil untuk saya. Item Tombol Bar tidak akan muncul.

Saya menyelesaikannya secara terprogram pada akhirnya (Swift 2.0):

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

Tidak diperlukan item Navigasi tambahan atau Item Tombol Bar.

Elliott Davies
sumber
1

Saya juga menghadapi masalah yang sama, saya dapat memperbaiki masalah ini dengan memilih opsi root view controller dan kemudian dalam matriks simulasi mengubah opsi Top bar menjadi Opaque Navigation Bar dan dapat menambahkan item di atas bilah navigasi. jawaban ini akan membantu seseorang.

reetu
sumber
1

Saya memiliki masalah yang sama di xcode 8. Saya harus menutup xcode dan membuka kembali proyek dan kemudian saya dapat menambahkan tombol bar ke Root Controller tanpa masalah.

SGM
sumber
1

Untuk XCode 8

Ada banyak jawaban disini. Saya mencoba beberapa dari mereka tetapi saya tidak bisa. Jadi saya menemukan solusi saya, cukup pilih Anda ViewController, buka bagian Attributes Inspector dan ubah Top Bar menjadi Opaque Navigation Bar and Boom. Anda akan melihat bilah navigasi di papan cerita Anda. Anda dapat mengubah judul atau menambahkan beberapa item. Jika Anda tidak ingin mempertahankan Buram, Anda dapat mengubah gaya ke Tereka .

masukkan deskripsi gambar di sini

emresancaktar
sumber
1

Di Xcode 10, saya baru saja mengubah jenis segue yang menuju ke pengontrol tampilan baru ini menjadi 'Push (deprecated)', menambahkan item navigasi seperti yang diizinkan setelah saya melakukan peralihan ini. Jika Anda beralih kembali ke jenis segue yang Anda inginkan, item navigasi akan tetap ada.

Mark Lyons
sumber
0

Alih-alih menyeret "Bar Button Item" ke "Navigation Controller", seret ke "Detail View Controller". Saat Anda menyematkan tampilan Detail ke "Tampilan Navigasi", "Item Navigasi" akan ditambahkan ke "Kontroler Tampilan Detail". Jika Anda menyeret "Item Tombol Bar" ke sisi kanan Item Navigasi, item tersebut akan dimasukkan di bawah "Item Tombol Bar Kanan"

Nancy
sumber
0

seperti yang dikatakan Mark Lyons, saya menggunakan solusi yang sama.

  • Pakai push segue dulu
  • menambahkan item bar
  • kembali kembali untuk menunjukkan segue
  • selesai
A_Mo
sumber
0

Di Xcode 11, Anda dapat menyeret tombol ke bilah navigasi untuk membuat tombol bilah Anda.

Sala
sumber