Peringatan ini terjadi di Xcode 6.1. Adakah yang tahu apa arti peringatan ini dan apa yang akan terjadi dengannya? Terimakasih banyak!
Di bawah ini adalah tangkapan layar dengan peringatan dibuka di kode sumber "
Bagaimana cara menemukan kendala yang menyebabkan peringatan? Xcode tidak memberi tahu Anda kendala mana yang menjadi masalah.
ios
xcode
cocoa-touch
storyboard
xcode6
Zhihao Yang
sumber
sumber
Jawaban:
Peringatan ini dapat mengganggu dan terjadi pada Xcode 6.1.1. Masalah utama adalah bahwa Anda tidak dapat dengan mudah menemukan batasan yang dirujuk dengan mengklik peringatan. Saya kira ini adalah bug dan akan diperbaiki cepat atau lambat.
Namun, sementara itu Anda dapat menggunakan solusi kecil ini:
Langkah 1: Deteksi peringatan yang mengganggu 😱
Langkah 2: Kanan / Ctrl-Klik pada peringatan, pilih
Reveal in Log
😨Langkah 3: Kagumi keindahan potongan log berikut:
Hmmm ... Apa ini ...?
Langkah 4: Mari kita lemparkan ke bilah pencarian proyek ... 😐
😮 Ya, Anda menebak dengan benar. Klik itu.
Langkah 5: 😁 OMG! Nikmati beberapa menit produktivitas tambahan hingga Apple memperbaiki bug yang mengganggu ini. 😎
Untuk 2016 ...
Perhatikan bahwa untuk Xcode 5/2016, secara mengganggu Anda harus keluar dan memulai ulang Xcode untuk menghapus peringatan ini dalam beberapa kasus.
Perhatikan bahwa secara membingungkan, kesalahan yang sama dapat disebabkan oleh masalah yang tidak terkait (ini tampaknya merupakan bug Apple atau penggunaan bahasa kesalahan yang buruk): jika Anda memiliki
IBInspectable
item, dan kebetulan menamainya di file Swift Anda. Xcode tidak menghapus nama lama UserDefinedRuntimeAttributes untuk Anda. Cukup klik ke "Identity Inspector" (item 3 di panel kanan) dan hapus item tak berguna.Untuk 2017 ...
sumber
Pesan ini dipicu ketika Anda telah menonaktifkan tampilan di storyboard Anda, tetapi tidak menonaktifkan kendala berdasarkan tampilan itu.
Misalnya, Anda menonaktifkan tombol, tetapi Anda masih memiliki beberapa kendala terkait dengan tombol itu. Ini mungkin merupakan kendala intrinsik seperti tinggi atau lebar, atau kendala relatif seperti jarak dari tampilan lain.
Anda harus mematikan setiap kendala yang merujuk pada tampilan, dan Anda harus melakukannya secara manual. Xcode terlalu konservatif di sini dan tidak akan melakukannya untuk Anda.
sumber
Solusi ini bekerja untuk saya.
Karena saya menyalin beberapa item dari proyek yang saya kembangkan di Xcode 5 ke Xcode 6, dan storyboard di Xcode 6 mendukung banyak tata letak, untuk setiap kendala, saya perlu menginstalnya dalam konfigurasi saat ini.
Misalnya, saya menggunakan "Lebar Ringkas | Tinggi Reguler", untuk batasan yang harus saya atur seperti di bawah ini:
Setelah saya memeriksa dan mengatur ratusan kendala dalam proyek saya, membersihkan dan membangun, peringatan akhirnya hilang.
sumber
Installed
kotak centang sial di atribut objek tampilan Anda. Jadi pastikan bahwa objek tampilan yang Anda pikir sedang ditampilkan telah dicentang kotak yang benar. Peringatan itu memberi tahu Anda bahwa beberapa objek tidak ditampilkan di jendelacurrent configuration
.Hanya ingin menambahkan kasus saya bagaimana Kesalahan ini terjadi pada saya: Dalam kasus saya, saya ingin menghapus Textfield dengan "Cmd + Backspace". Saya melakukan ini langsung di Scene-Builder Tree-View:
Anda dapat melihat bahwa bidang tunda berwarna abu-abu.
Jadi itu mudah ditemukan bagi saya. Anda dapat benar-benar menghapus Field dengan memilih:
Edit-Hapus dari Menu
Anehnya - ini benar-benar menghapus bidang (termasuk kendala). Mungkin ini membantu seseorang untuk dengan mudah menemukan penyebab Peringatan yang menjengkelkan ini ...
sumber
Penjelasan yang Diperluas
Tidak ada yang salah dengan jawaban lainnya. Saya hanya ingin menarik perhatian pada kata - kata dalam peringatan asli dan untuk mengidentifikasi beberapa kasus penggunaan di mana ini dapat muncul dalam alur kerja seseorang.
Berarti bahwa beberapa item (biasanya tampilan kontrol atau kustom yang biasanya terlihat) direferensikan dalam satu atau lebih kendala dimatikan (dinonaktifkan atau centang "diinstal" kotak centang). Jika misalnya Anda memutuskan bahwa Anda ingin memindahkan kontrol atau tampilan di storyboard Anda di luar tampilan utama (atau Anda mungkin melihat kadang-kadang ketika melakukan sesuatu yang menarik di kelas ukuran) maka Anda dapat melihat peringatan ini jika kontrol memiliki kendala yang melekat padanya .
Seiring dengan solusi yang disarankan:
Dua Pendekatan untuk Memperbaiki
Garis Besar Dokumen
Secara visual Anda dapat membuka Document Outline di storyboard Anda dan mencari kendala abu-abu yang merujuk kontrol Anda / tampilan duduk di luar tampilan utama (memperluas garis besar, klik kendala, dan melihat atribut inspektur, mouse ke bawah untuk meninjau dengan cepat) . Kemudian hapus kendala dari konteks ini (kelas ukuran). Sebagai contoh, dalam kasus saya, saya hanya memegang kontrol sampai saya memutuskan nanti di mana harus menyajikannya, jadi saya memilih untuk menghapus sepenuhnya kendala yang menyinggung sampai nanti. Tetapi dalam kelas ukuran saya hanya akan menghapus kendala dari konteks saat ini menggunakan kotak centang yang dipasang di inspektur atribut.
Log Navigator / Alat Cari
Seseorang juga dapat terus menggunakan Log Navigator untuk menemukan kontrol masalah melalui pengidentifikasi unik yang diberikan untuk setiap objek di storyboard. Dalam log itu akan tepat sebelum teks yang disorot kuning dan biasanya mengambil bentuk seperti yang terlihat dalam contoh saya di atas: jvj-mY-DHf
Dengan menggunakan pengidentifikasi seseorang kemudian dapat menggunakan alat temukan di Xcode untuk menemukan dan menghapus (sepenuhnya) atau menghapus (untuk konteks saat ini) kendala yang menyinggung.
Jika Anda menyukai Xml dan kesederhanaannya, Anda juga bisa membuka Storyboard sebagai Source Code dan menemukan pengidentifikasi unik yang menyinggung dan menghapus blok xml yang sesuai.
sumber
Salah satu alasan ini bisa terjadi adalah karena Anda memilih kelas ukuran yang tidak kompatibel dengan kendala Anda (
wAny hAny
adalah kasus umum). Dalam kasus seperti itu, cukup pilih kelas ukuran yang berbeda di Interface Builder dan Anda selesai.sumber
Bagi saya, itu terjadi jika saya menetapkan objek contraint baru ke objek (bukan tampilan) dengan opsi "Batasi ke margin" tidak dicentang. Masalah diselesaikan dengan mencentang opsi (yang default).
sumber
Apa yang berhasil untuk saya (dan saya tidak tahu mengapa) adalah mematikan "Gunakan Variasi Sifat", lalu lakukan pembersihan, lalu nyalakan kembali. Bangunan berikutnya tidak memiliki peringatan.
Untuk mematikan "Gunakan Variasi Karakter" cukup pilih storyboard Anda di Project Navigator dan kemudian pilih File Inspector.
Kemudian cukup hapus "Use Variation Variations", lakukan pembersihan dengan menekan Shift-CMD K, dan kemudian nyalakan kembali variasi ciri jika Anda ingin menggunakannya.
sumber
Saya pikir itu adalah kendala yang masih ada karena jawaban yang lain, namun itu karena 'outlet' yang saya miliki untuk item yang saya hapus sebelumnya. Yang harus dilakukan adalah:
Skenario terburuk Anda menghapus semua outlet Anda dan menghubungkannya kembali. Kasus terpecahkan!
sumber
Seperti yang disebutkan dan dipandu dengan baik dalam jawaban @ BadCat , saya mengikuti langkah-langkahnya dan hanya satu langkah lagi yang berani saya ambil!
Langkah-langkah yang harus dilakukan setelah langkah terakhir jawaban BadCats:
Langkah 1:
Saya memilih kendala di Interface Builder dan kemudian mengingatnya untuk apa dan kemudian menghapusnya.
Langkah 2
Bangun Proyek XCode dan itu akan menunjukkan Anda mungkin jumlah Peringatan meningkat. Itu karena Anda telah menghapus batasan yang harus dikompilasi dengan baik. Jadi, lanjutkan ke Langkah 3!
Langkah 3
Tambahkan kembali batasan yang Anda ingat (salah satu yang Anda hapus). Dan kemudian membangun kembali!
Bagi Aku peringatan itu hilang hanya dengan melakukan ini! Saya kira ini akan berhasil bagi sebagian orang!
Sebab:
Karena saya dapat memahami masalah yang menyebabkan peringatan ini adalah, saya memiliki Label yang terhubung ke IBOutlet, tetapi namanya dimulai dengan huruf kapital. Jadi saya menamainya dengan huruf sederhana di ViewController dan datang untuk mengubahnya di IB. Saya menghapus IBOutlet lalu dan menghubungkannya ke nama properti yang baru diganti namanya dan terhubung. Lalu saya perhatikan ada peringatan baru yang muncul.
Pertama saya mencoba jawaban berikut juga di utas ini, tetapi tidak membantu!
Bersulang!
sumber
Kasing saya pilih label, lalu klik control + X, itu akan dinonaktifkan, tapi saya tidak melakukan apa-apa dengannya. Ketika saya membangun, itu akan menampilkan peringatan. Solusi: hapus label atau hapus kontrol yang dipilih + X untuk label.
sumber
Saya menghapus semua elemen UI termasuk batasannya, dan menambahkan semuanya lagi, peringatan itu hilang begitu saja. Bagaimanapun ini adalah cara terburuk tetapi berguna untuk menyelesaikan ini.
sumber
Saya punya masalah pada tampilan tumpukan. Menghapus kendala dan menambahkannya kembali tidak membantu. Membersihkan dan membangun kembali tidak membantu.
Bagi saya, solusinya adalah membuat objek tampilan tumpukan yang sama sekali baru.
Kemudian pindahkan semua elemen dari tampilan tumpukan lama ke tampilan tumpukan baru.
Menghapus tampilan stack lama memperbaiki masalah.
sumber