Baru-baru ini saya meningkatkan ke Xcode 8 dan saya mengalami masalah dengan Storyboard.
Jika saya membuka proyek dan saya tidak memiliki Storyboard terbuka, itu akan dikompilasi dan berjalan dengan baik. Setelah saya membuka Storyboard, saya mendapatkan banyak kesalahan tentang IB Designables seperti yang ditunjukkan di bawah ini.
Tampilan ini adalah satu-satunya tampilan yang menggunakan tampilan kustom dari TextFieldEffects
dan BEMCheckbox
yang saya impor menggunakan Cocoapods.
ios
xcode8
xcode-storyboard
Alan
sumber
sumber
Jawaban:
Anda dapat mencoba salah satu dari yang berikut untuk mencari tahu penyebabnya:
IBDesignablesAgentCocoaTouch
log di direktori ini:~/Library/Logs/DiagnosticReports
dan lihat penyebabnya.Pergi ke Editor -> Debug Selected View sambil memilih Anda
@IBDesignable UIView
di storyboard Anda, dan lihat jejak stack.Hapus folder Turunkan Data.
Bersihkan proyek Anda
Shift
+Command
+Alt
+K
.Bangun proyek Anda
Command
+B
.sumber
Fatal error: Use of unimplemented initializer 'init(frame:)' for class 'TestIBKit.Button'
. Saya tidak tahuIBDesignablesAgentCocoaTouch
proses itu memanggilinit(frame:)
, bukaninit?(coder aDecoder:)
.init(frame:)
di subclass UIButton sayaSaya memecahkan masalah dengan melakukan hal berikut:
File > Workspace settings
.DerivedData
folder.DerivedData
folder, dan hapus folder yang sesuai dengan proyek Anda.Editor > Refresh all views
.Diperbarui
Terkadang langsung saja
Editor > Refresh all views
bekerja. JikaRefresh all views
dinonaktifkan, keluarlah dari Xcode dan coba lagi.sumber
Saya hanya menghapus tampilan yang gagal dan tekan perintah + Z untuk membatalkan penghapusan. Ini bekerja untuk saya.
Jika mengedit tampilan gagal nanti, kesalahan dapat terjadi lagi, lakukan di atas lagi.
sumber
Saya menghadapi masalah ini di CocoaPod 1.5.0. Solusinya adalah menginstal ulang pod lagi (pod install lagi) setelah kesalahan ini muncul atau Anda dapat menggunakan CocoaPod 1.4.0 sebagai gantinya. Ini berfungsi dengan baik di 1.4.0 (setidaknya untuk saya.)
memperbarui:
Tambahkan skrip berikut di Podfile membantu saya memecahkan masalah di 1.5.0
referensi: https://github.com/Skyscanner/SkyFloatingLabelTextField/issues/201#issuecomment-381915911
sumber
s work for me, you should add
berakhir` ke terakhir kode.Menambahkan kode berikut ke
@IBDesignable
kelas saya berhasil.sumber
UITextView
. (1)init(frame: CGRect, textContainer: NSTextContainer?)
, (2)init?(coder aDecoder: NSCoder)
. Kemudian bangun kembali dan peringatan (kesalahan) hilang. Bahkan tidak perlu membersihkan folder build.Bagi siapa pun - seperti saya - yang tidak dapat menemukan
IBDesignablesAgentCocoaTouch
file itu atau ketika mencoba 'Debug Selected Views' dari Editor mendapat kesalahan, berikut ini cara lain untuk men-debug kesalahan "Gagal membuat" itu.Buka aplikasi 'Konsol', dari bilah sisi pilih Mac Anda saat ini (mungkin akan dipilih secara otomatis), kemudian pada bilah pencarian cari "IBSceneUpdate" dan tekan enter.
Dengan cara ini, setiap kali Anda mendapatkan kesalahan Xcode untuk
IBDesignable
tidak dapat melakukan render, Anda juga akan mendapatkan entri "IBSceneUpdate" baru dengan detail lebih lanjut tentang kesalahan tersebut.Setidaknya itulah bagaimana saya bisa men-debug
IBDesignable
kesalahan saya !sumber
Jika Anda menggunakan file xib untuk uiview khusus. Coba ini:
Ubah dari
Untuk:
sumber
Cobalah untuk menonaktifkan 'Gunakan Variasi Karakter' (panel Identitas dan Jenis) untuk file xib apa pun yang mungkin Anda miliki untuk tampilan kustom yang digunakan di storyboard Anda.
sumber
masalah saya diselesaikan dengan menghapus folder (yang terkait dengan proyek ini) dari folder data turunan. Anda dapat melakukan ini dengan mengklik File -> Project Setting -> kemudian klik tanda panah deside / Pengguna / .../Xcode/DerivedData klik folder DerivedData Anda akan melihat folder bernama proyek Anda menghapusnya. keluar dari xcode, buka proyek Anda, bersihkan proyek dengan menggunakan langkah ini Product-> clean lalu bangun proyek: Product-> Build Ini akan menyelesaikan masalah ini.
sumber
Jawaban yang benar diberikan oleh @Maria :
Cara alternatif :
Spotlight
console.app
Crash reports
IBDesignablesAgent-iOS
dan tinjau crash logsumber
Cukup buka papan cerita Anda -> Editor -> Refresh semua tampilan. Ini bekerja untuk saya.
sumber
Saya mencoba membersihkan dan menjalankan proyek tidak akan menyelesaikan masalah ini.
Tapi Tutup dan buka kembali proyek itu.
sumber
Ketika saya debug ini saya menemukan ada beberapa kelas yang memodifikasi UI. Biasanya marquelabel yang merupakan subclass dari UILabel atau kelas subclass lainnya dari UIView dan menggambar ui pada saat run time dan bertabrakan dengan mesin Autolayout. Coba berikan lebar atau tinggi tetap untuk tampilan khusus ini. Jika tidak menyelesaikan masalah Anda, coba solusi berikut: -
Solusi 1: - Batalkan komentar #use_frameworks di dalam file pod Anda.
Solusi 2: - Coba hapus data yang diturunkan
sumber
Saya memiliki masalah yang sama dan datang ke sini untuk mencoba dan mencari tahu apa yang terjadi. Saya perhatikan jawaban berperingkat teratas dan jawaban itu sendiri tidak membantu saya, karena IBDesignable tidak ada di folder log dan saya sudah mencoba semua opsi lain di sana, namun dalam komentar saya perhatikan seseorang berbicara tentang init bingkai.
Saya memutuskan untuk mencoba mengomentari ekstensi IBDesignable saya untuk UIView dan itu langsung memperbaiki masalah. Jadi, untuk memperbaiki ini, temukan ekstensi yang menyebabkan masalah dan pastikan untuk mengatur init yang diperlukan dengan membuat kelas IBDesignable dan menyediakan inisialisasi yang diperlukan sebagai berikut:
PENTING: ingatlah untuk menambahkan kelas baru ke item yang Anda gunakan pada yang dirancang.
sumber
Menghadapi Kesalahan yang sama: Jika mengkustomisasi UITextField dan menggunakan pembuat antarmuka, kesalahan di konsol adalah -Gunakan inisialisasi init yang tidak diimplementasikan '(frame :)' untuk kelas "CustomField"
Menambahkan penginisialisasi untuk memperbaiki kesalahan
sumber
Saya menghadapi masalah ini setelah pembaruan ke versi XCode terbaru. Setelah mencoba beberapa solusi yang dijelaskan di atas, saya hanya cukup Xcode dan kemudian mematikan sistem dan menyalakannya dan itu bekerja untuk saya.
sumber
Setelah Anda melakukan perubahan yang diperlukan, ubah storyboard atau dalam kasus saya a. Xib untuk membuka di "XCode 7", simpan dan tutup. Ini hanya penghentian kesenjangan ukuran untuk mengatasi kesalahan tetapi pada akhirnya Anda harus memperbaikinya atau melakukan ini sampai Anda tidak lagi mampu.
sumber
Dalam kasus saya, saya menggunakan perpustakaan yang subkelas
UIView
. Itu menggunakanIB_DESIGNABLE
, dan tidak ada panggilan untuk[super awakeFromNib]
. Setelah saya menambahkan panggilan ke metode ini, bug hilang.Saya tidak yakin apakah fakta bahwa implementasi
IB_DESIGNABLE
itu berdampak dalam hal ini.sumber
Ini cara termudah bagi saya: tambahkan skrip ini ke blog Anda
Podfile
Podfile:
Sumber:
Solusi untuk @IBDesignable ini dapat ditemukan di sini: https://github.com/CocoaPods/CocoaPods/issues/5334
sumber