Peringatan “Gaya Biasa tidak didukung dalam Item Navigasi” dengan Item Tombol Bar saya yang disesuaikan

88

Saya menyeret Round Rect Button ke posisi kanan Bar Button Item, dan mengatur gambar ke Round Rect Button. Semua berfungsi dengan baik, kecuali peringatan "Gaya Biasa tidak didukung dalam Item Navigasi". Bahkan jika saya memilih gaya Item Tombol Bar ke "Berbatasan", peringatan masih ada. Ada apa dengan Xcode 4.2? Terima kasih sebelumnya!

Ps. Saya menyesuaikan banyak Item Tombol Bar dengan Tombol Persegi Bulat, beberapa kali Xcode 4.2 hanya menampilkan satu peringatan pada Item Tombol Bar, beberapa kali menampilkan peringatan pada semua Item Tombol Bar.

lu yuan
sumber
1
Saya menulis entri blog tentang ini: blog.mosheberman.com/…
Moshe
Jangan tambahkan tombol, tambahkan item tombol bar. Ini adalah kesalahanku.
Daniel Springer

Jawaban:

136

Saya dapat menghapus kesalahan ini dengan mengedit file storyboard secara manual dan menemukan entri style = "plain" yang menyinggung pada item Tombol Bar di <navigationItem>elemen.

Berubah dari:

<barButtonItem key="rightBarButtonItem" style="plain" id="juB-DL-F9i">

Untuk:

<barButtonItem key="rightBarButtonItem" id="juB-DL-F9i">

Ini menghapus peringatan ... benar atau salah.

Ini mungkin peretasan yang luar biasa dan kekhawatiran yang lebih besar adalah saya tidak melakukan root atau menghapus item tombol bar yang tidak terlihat dari keseluruhan dokumen. Ini setelah melalui semua elemen satu per satu dan menemukan beberapa bilah navigasi kosong (tanpa turunan) dan kemungkinan terjadi dengan banyaknya salinan dan tempel (cmd + c | v) warisan dan tidak menggunakan duplikat (cmd + d) untuk membangun antarmuka. Meskipun sumber penyebabnya bukan akar penyebab, gejalanya adalah item batang tidak muncul dalam "tampilan garis besar" dokumen untuk diperbaiki. Perilaku Interface Builder menurut saya kadang-kadang bernuansa dan wadah kosong di mana harus ada sesuatu dalam tampilan garis besar adalah bau. Nah itu untuk saya sekarang. Terkadang menghapus node yang melanggar dan membangun kembali akan memperbaiki masalah yang paling aneh.

PERINGATAN: cadangkan storyboard Anda sebelum Anda mencoba ini ... kontrol versi adalah teman Anda ... Saya tidak bertanggung jawab jika storyboard Anda benar-benar disemprot dan tidak dapat dikompilasi. Yang akan Anda dapatkan hanyalah "Sudah kubilang!" Saya belajar dengan cara yang sulit beberapa kali, tetapi kontrol sumber yang rajin membuat saya sakit kepala.

EDIT: taruh tanda kurung di blok kode

Hunter-Orionnoir
sumber
24
pilih item barbutton di pembuat antarmuka, buka panel atribut di sebelah kanan, dan ubah gaya item tombol bilah menjadi "Berbatasan" menerapkan perbedaan yang sama ke file papan cerita. jadi ini harus aman.
mash
Terima kasih atas saran @mash itu, cara saya melakukannya sangat menyakitkan dengan potensi rasa sakit dan penderitaan.
Hunter-Orionnoir
@ SpaceDog2 Terima kasih atas perhatiannya. Saya belum meningkatkan, jadi saya tidak bisa menambahkan konfirmasi apa pun untuk itu. Saya akan sangat berhati-hati dengan metode ini. Saya tahu ini membantu banyak orang sejauh ini. Pada waktunya kami akan melihat apakah itu berhenti membantu.
Hunter-Orionnoir
5
Solusi ini bekerja dengan sempurna untuk saya di Xcode 7.1. Selain itu, alih-alih langsung mengedit kode sumber, Anda dapat mengubahnya di storyboard itu sendiri (mengganti gaya dari Biasa ke Berbatasan), dan itu memiliki hasil yang sama persis seperti menghapus secara manual style="plain"dari kode sumber storyboard. Jadi, bagi saya saran dari Hunter ini tampaknya sah.
Erik van der Neut
Lihat jawaban dstudeba juga, saya bahkan tidak tahu apa yang dia gambarkan itu mungkin. mungkin bisa menyelamatkan semua orang dari rasa sakit dan penderitaan karena mengedit file dengan tangan. Kontrol sumber adalah teman Anda, amankan semuanya. ;)
Hunter-Orionnoir
31

Jika Anda mengklik peringatan dan Anda tidak pergi ke item navigasi yang menyinggung, lakukan hal berikut. (representasi visual dari jawaban Hunter dengan metode yang lebih aman dari komentar yang ditambahkan)

Di browser file, klik kanan pada storyboard dan pilih Open As Source Code

masukkan deskripsi gambar di sini

Di halaman kode sumber, cari "biasa", dan temukan yang dilampirkan ke Item Navigasi.

masukkan deskripsi gambar di sini

Untuk mendapatkan nama View, menempatkan "adegan" di bar pencarian dan klik pencarian kembali panah untuk mencari contoh pertama pada tag yang di atas itunavigationItem

masukkan deskripsi gambar di sini

Berikut adalah nama Scene Anda, Anda sekarang dapat mengubah tampilan Storyboard Anda kembali Interface Builder - Storyboarddengan metode klik kanan yang dijelaskan di atas, dan kemudian pergi untuk memilih Scene di menu scene, dan Bar Item di dalamnya.

masukkan deskripsi gambar di sini

Pergi ke inspektur Attributes dan ubah gaya dari PlainmenjadiBordered

masukkan deskripsi gambar di sini

dstudeba.dll
sumber
1
Keren. Saya pasti akan mencoba ini saat ini terjadi.
Hunter-Orionnoir
13

Saya menghentikan peringatan tentang Plain Style dengan melihat-lihat di Document Outline. Itu menunjukkan Item Navigasi saya, dan di dalam 2 Item Tombol Bar itu, dan di dalam masing-masing tombol itu. Pengaturan yang menyinggung ada di Item Tombol Bar. Di inspektur atributnya, saya mengubah Gaya dari Biasa menjadi Selesai, dan peringatan itu hilang. Catatan: Saya menggunakan XCode 5.

MarkAurelius
sumber
8

Jika Anda menggunakan storyboard, klik peringatan dan itu akan membawa Anda ke item navigasi yang menyinggung (saya punya dua untuk masalah ini, satu membawa saya ke sana, yang lain tidak) - ubah gaya dan bersihkan proyek.

Gaya Tombol Bar disetel ke polos

Baja Daur Ulang
sumber
Dalam masalah di atas ini sebenarnya tidak membawa saya kemana-mana. Saya pikir itu adalah poin penting dari masalah khusus ini, item tersebut hilang sama sekali dari navigator, tetapi jawaban dstudeba memiliki pendekatan yang menarik, penasaran jika membuka storyboard secara berbeda membantu orang.
Hunter-Orionnoir
Ini jawaban yang paling tepat. Saya telah mengubah gayanya menjadi Berbatasan.
Andrej
6

backBarButtonItem leftBarButtonItemdan rightBarButtonItemmerupakan UINavigationItemobjek. Tidak ada styleproperti di dalam UINavigationItemjadi ini alasan peringatan. Anda harus menyetel barButtons secara terprogram:

iOS 4:  

UIButton *bt=[UIButton buttonWithType:UIButtonTypeRoundedRect];
 [bt setFrame:YourFrame];
 //[bt setImage:[UIImage imageNamed:@"backBT"] forState:UIControlStateNormal];
 [bt addTarget:self action:@selector(popViewController:) forControlEvents:UIControlEventTouchUpInside];
 UIBarButtonItem *leftButton=[[UIBarButtonItem alloc] initWithCustomView:bt];
 self.navigationItem.leftBarButtonItem=leftButton;

Untuk iOS 5+:

Baca bagian "Menyesuaikan Tampilan" dari referensi UIBarButtonItem .

Tikar
sumber
3
Saya memiliki proyek warisan dengan banyak pengontrol tampilan & tombol. Saya tidak bisa membujuk XCode untuk memberi tahu saya tombol mana yang menyebabkan peringatan. Ada petunjuk? Terima kasih!
Olie
Mungkin dijalankan melalui pengontrol tampilan Anda dan "temukan" UIBarButtonItenStyle. Biasanya di situlah properti salah disetel
TimWhiting
1

Di bilah navigasi coba gunakan UIBarButtonItem alih-alih tombol Round rect dan atur Gambar untuknya.

iOSDev
sumber
tetapi gaya UIBarButtonItem bukanlah yang saya butuhkan.
lu yuan
1

Dalam kasus saya, itu adalah gambar panah kembali, yang disetel ke "Biasa".

Pesan kesalahan muncul untuk merujuk ke semua item di bilah navigasi.

pengguna462990
sumber
0

Setelah Anda yakin bahwa semua tombol bilah di storyboard disetel ke apa pun kecuali biasa, pastikan Anda melakukan git commit dan hapus data turunan. Saya menghabiskan selamanya untuk mencari tahu mengapa masalah tidak memperbaiki dirinya sendiri, dan menghapus folder data turunan memperbaikinya untuk saya.

Sethmr
sumber