Saya menambahkan file nib baru ke proyek saya, dan mencoba memuatnya.
Namun, ketika saya mengklik ikon bilah alat yang seharusnya membawa saya ke tampilan yang saya buat, saya menerima NSInternalInconsistencyException
pesan:
Mengakhiri aplikasi karena pengecualian 'NSInternalInconsistencyException' tanpa alasan, alasan: '- [UIViewController _loadViewFromNibNamed: bundel:] memuat nib "..." tetapi nib outlet view tidak disetel.'
Jadi saya membuka file nib saya, dan saya melihat bahwa tidak ada outlet referensi yang ditetapkan. Namun, saya mencoba mengklik dan menyeret lingkaran untuk "outlet referensi baru" ke Pemilik File, tetapi itu tidak akan membiarkan saya ... apa yang harus saya lakukan untuk membuat tampilan saya ditampilkan?
Jawaban:
Kalian benar, tetapi karena saya adalah seorang pendatang baru, saya butuh sedikit waktu untuk mengetahui semua langkah untuk melakukan itu. Inilah yang bekerja untuk saya:
sumber
MyViewController
adalah subkelas dari subkelasUIViewController
dan tidak ada diview
bawah "Outlet". Jika saya subkelasMyViewController
langsung dariUIViewController
tampilan muncul "Outlet". Sihir atau bug Xcode.Ini adalah proposal Josh Justice, tetapi dengan cara grafis (gambar adalah milikku):
Akhirnya View Controller dipakai dengan kode bergulir:
sumber
Saya biasanya dapat memperbaikinya dengan membuat ulang koneksi antara Pemilik File dan tampilan. Seret kontrol dari pemilik File ke View Anda (dalam IB) dan pilih view dari menu pop-up.
sumber
View Identity - Identitas Kelas tidak disetel. Setelah mengaturnya ke kelas yang sesuai, masalah terselesaikan.
sumber
Apakah Anda yakin memiliki UIView (atau subclass) yang ditugaskan ke properti "view" yourViewController?
Klik kanan pada "Pemilik File" di panel kiri xib untuk yourViewController dan verifikasi bahwa outlet "view" telah diatur. Jika tidak, atur ke tampilan!
ini pasti akan memperbaiki Masalah
sumber
Bagi saya semua hal yang dinyatakan di sini https://stackoverflow.com/a/6395750/939501 benar tetapi masih ada kesalahan melempar, alasannya saya membuat kelas View dengan nama ABCView dan kemudian menghapusnya kemudian saya menambahkan view controller sebagai ABCViewController jadi entah bagaimana itu merujuk ke ABCView lama di view controller baru, saya harus menghapus ABCViewController dan menambahkan yang baru dengan nama berbeda yang menyelesaikan masalah saya.
Terima kasih
sumber
Saya memiliki masalah yang sama dengan XCode 4.6.3. Saya sudah mulai dengan beberapa file yang dinamai
MySettingsView.h
dan.m
tetapi dihapus mendukungMySettingsViewController.h
, tetapi meskipun mencoba sebagian besar petunjuk yang disebutkan di sini, masih terus membuat kesalahan,Itu jelas masih "bingung", mencoba memuat MySettingsView.xib bukan MySettingsView Controller .xib. Mungkin logika "lakukan apa yang saya maksudkan" terlalu mewah.
Jadi saya mengatasi masalah dengan meng-hardcoding nama NIB / XIB di MySettingsViewController.m:
sumber
Bagi siapa pun yang menggunakan metode xib untuk membuat UIView dan mengalami masalah ini, Anda akan melihat bahwa Anda tidak akan memiliki outlet "view" di bawah menu inspektur koneksi. Tetapi jika Anda mengatur kelas kustom Pemilik File ke UIViewController dan kemudian Anda akan melihat outlet "view", yang Anda dapat dengan mudah CMND menghubungkan outlet ke CustomView.
sumber
Masalah saya dengan ini disebabkan oleh memiliki duplikat nib di folder kelas yang tidak memiliki set tampilan. xcode tampaknya memilih satu nib untuk membangun dan kemudian yang lain saat saya membangun proyek. Baru saja menghapus yang lain. Kelihatan bagus. Doh!
sumber
Hanya menghabiskan waktu lebih dari satu jam untuk mencari tahu mengapa properti tampilan saya tidak diatur di controller tampilan saya setelah memulai dari nib. Ingatlah untuk memanggil "[super initWithNibName ...]" di dalam initWithNibName pengontrol tampilan Anda.
sumber
Saya baru saja memperbaiki ini di tambang saya. Proyek besar, dua file. Salah satunya adalah "ReallyLargeNameView" dan yang lainnya adalah "ReallyLargeNameViewController"
Berdasarkan jawaban ke-2 yang dipilih di atas, saya memutuskan untuk membersihkan bangunan saya. Nada, tapi saya masih curiga XCode (karena saya memiliki dua kelas yang identik, harus abstrak mereka tetapi eh ...) Jadi seseorang bekerja, satu tidak. Nama pemilik file sejauh disalin dan ditempelkan, outlet disusun ulang, xCode dinyalakan ulang, masih belum ada.
Jadi saya menghapus kelas bernama serupa (yang merupakan tampilan). Segera, kesalahan baru "outlet di dalam tidak terhubung" secara harfiah adalah "webView bukan nilai kunci" bla ... pada dasarnya mengatakan "Visual Studio lebih baik". Ngomong-ngomong ... Saya menghapus file bernama yang lebih kecil, dan bam, itu berhasil.
XCode dikacaukan oleh file dengan nama yang mirip. Dan proyek ini cukup besar sehingga perlu me-reboot sedikit, yang mungkin menjadi bagian darinya.
Seandainya saya punya jawaban yang lebih teknis daripada "XCode bingung", tapi yah, xCode banyak bingung pada saat ini. Tidak bingung dengan cara yang sama saya akan membantu anak kecil. Ini berfungsi sekarang, :) Harus menguntungkan orang lain jika hal di atas tidak memperbaiki apa pun.
Selalu ingat untuk membersihkan bangunan Anda (dengan menghapus simulator juga)
sumber
Saya juga memiliki masalah yang sama dan masalah saya adalah saya menambahkan lokalisasi lain (bahasa Inggris) ke nib ViewControllers sehingga aplikasi saya dengan Jerman lokalisasi tidak dapat menemukan nib dengan bahasa Inggris Lokalisasi !! Semoga ini bisa membantu siapa saja!
sumber
sumber
Bagi saya, masalahnya disebabkan oleh panggilan
initWithNibName:bundle:
. Saya menggunakan sel tampilan tabel dari file nib untuk menentukan formulir entri yang didudukitableViews
. Karena saya tidak memiliki pandangan, tidak masuk akal untuk menghubungkan ke satu. Sebaliknya, jika saya memanggilinitWithStyle:
metode sebagai gantinya, dan dari dalam sana, saya memuat file nib, maka semuanya berjalan seperti yang diharapkan.sumber
Jawaban sebelumnya hampir memecahkan masalah bagi saya, tetapi langkah terakhir hilang.
Sekarang setiap @IBOutlets yang Anda tambahkan akan dilampirkan.
Cheers, Richard
sumber
Saya memiliki masalah yang sama, tetapi solusi yang sedikit berbeda diperlukan. Masalah dalam kasus ini adalah kelas dari Pemilik File, bukan kelas Tampilan. Untuk mengatur ini, saya harus mengklik ikon "mundur bermain" di sudut kiri bawah jendela Interface Builder, dan kemudian muncul opsi yang mengisolasi karakteristik Pemilik File, Responder Pertama, dan Tampilan. Mengklik yang pertama (kotak transparan besar), memungkinkan saya untuk kemudian mengatur kelas kustom seperti yang disarankan di atas.
sumber
Saya memiliki masalah yang sama, tetapi diperlukan solusi yang berbeda. Masalah dalam hal ini adalah kelas dari Pemilik File tidak terhubung ke file xib.
sumber
Saya bertemu dengan sesuatu yang sangat mirip malam ini, dengan subclass Swift UIViewController. Dalam hal ini, tidak ada perbaikan di atas yang berfungsi, tetapi menyusun ulang kode saya sedikit berhasil. Net-net, memiliki ekstensi ke subclass terjadi sebelum definisi subclass itu sendiri dalam file yang sama tampaknya membingungkan XCode, meskipun dikompilasi dengan baik; perbaikannya adalah menempatkan ekstensi setelah definisi subkelas.
Saya telah memposting detail dalam jawaban untuk pertanyaan serupa ini .
sumber
Dalam kasus saya, penginisialisasi yang ditunjuk
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
di kelas *** ViewController dilaksanakan sehingga bahkan ketika saya memanggil penginisialisasi lain untuk menginisialisasi objek, penginisialisasi yang ditunjuk akan dipanggil.Jadi untuk mengatasi masalah ini memeriksa apakah
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
itu juga merupakan cara yang tepat.sumber
Saya mengalami masalah ini dengan cara yang sedikit berbeda dari jawaban lain di sini.
Jika saya hanya membuat file xib baru, menambahkan UIViewController ke dalamnya di Interface Builder, dan mengatur kelas khusus UIViewController ke pengontrol tampilan saya, yang mengakibatkan crash "tampilan outlet tidak diset". Solusi lain di sini mengatakan untuk mengontrol-tarik keluar tampilan ke Lihat, tetapi bagi saya tampilan keluar diklik dan saya tidak bisa mengontrol-tarik.
Saya tahu bahwa kesalahan saya adalah menambahkan UIViewController di Interface Builder. Sebagai gantinya, saya harus menambahkan UIView, dan mengatur Kelas Kustom Pemilik File ke pengontrol tampilan saya. Kemudian saya bisa mengontrol-seret outlet tampilan dari Pemilik File ke tampilan baru saya UIView dan semuanya berfungsi sebagaimana mestinya.
sumber
Hanya memiliki kesalahan yang sama dalam proyek saya, tetapi alasannya berbeda. Dalam kasus saya, saya memiliki pengaturan IBOutlet dengan nama "Lihat" di kelas UITableViewController kustom saya. Saya tahu "view" itu istimewa karena itu adalah anggota kelas dasar, tetapi saya tidak berpikir View (kasus berbeda) juga akan menjadi masalah. Saya kira beberapa area Kakao tidak peka terhadap huruf besar-kecil, dan mungkin memuat xib adalah salah satu area tersebut. Jadi saya hanya menamainya menjadi DefaultView dan semuanya baik-baik saja sekarang.
sumber
pilih pemilik file dan buka pembukuan identitas, beri nama kelas yang terkait. Jika tidak ada metode di atas yang berfungsi dan Anda masih tidak dapat melihat tampilan outlet, kemudian berikan koneksi outlet referensi baru ke Pemilik File maka Anda dapat dapat melihat tampilan outlet. Klik pada tampilan Outlet untuk membuat koneksi antara Lihat Outlet dan pemilik File. Jalankan Aplikasi ini berfungsi dengan baik.
sumber
Dalam kasus saya, tampilan tidak dilihat dalam xib. di xib, View adalah size = none (tab ke-4 kanan). Saya mengatur ukuran ke Freeform dan memuat ulang xCode. tampilan naik banding dan saya mengatur tautan yang tepat ke Tampilan.
sumber
Jika Anda telah mencoba semuanya dan Anda masih mendapatkan kesalahan ini, cobalah membuat kembali file kelas dari awal tetapi ingat untuk memilih kotak centang "Juga buat file XIB". Ini akan secara otomatis menghubungkan beberapa item yang tidak ditautkan saat membuat file-file ini secara terpisah. Setelah ini dibuat, Anda mungkin dapat memotong dan menempelkan semuanya ke XIB baru dan itu akan berfungsi dengan baik.
Saya menemukan masalah ini secara khusus dengan membuat file secara terpisah di Swift.
sumber
bagi saya itu terjadi, kapan
UIView dari ViewController ini harus dimuat pada tampilan lain sebagai subview,
kami akan memanggil sesuatu seperti ini
Dimana
Di sini loadView tidak ada ,,, menambahkan baris ini menyelesaikan masalah saya.
sumber
Saya memiliki masalah yang sama, saya menemukan dan itu karena saya telah menandai " sel statis " di properti Table View di bawah opsi Konten . Bekerja ketika diubah menjadi "
Dynamic Prototypes
". Tangkapan layar di bawah.sumber
Saya memiliki masalah yang sama dengan Xcode 9.3, dan pengaturan "Modul" di bawah atribut "Pemilik File" ke modul proyek memperbaiki ini untuk saya.
sumber
Buka storyboard file di mana viewController Anda ada, atau XIB file yang terkait dengan textEdit.app dan memeriksa apakah storyboard atau nama XIB adalah sama viewController Anda, kemudian mengubahnya, menyimpan dan isi ulang / restart Xcode.
sumber
Jika Anda menggunakan metode init khusus, periksa apakah Anda mengembalikan sesuatu yang valid. Saya menemukan sepotong kode yang mengalami crash seperti ini:
Di kelas lain, controller dibuat seperti ini:
Masalahnya adalah bahwa dalam metode init, self belum berubah dan akan terlihat seperti ini sebagai gantinya:
sumber
Saya ingin yang kedua Stephen J. Beberapa kali X Code hanya menjadi bingung. Saya hanya punya pengalaman di mana saya sering bermain-main dengan UI, dan telah menambah dan menghapus beberapa kali outlet. Outlet tidak akan terhubung lagi. Saya tidak pernah menemukan alasan tertentu (saya telah mencoba semua solusi di atas), dan saya hanya perlu menghapus NIB dan membuatnya kembali dari awal, dan sebenarnya harus menggunakan nama yang berbeda untuk NIB sebelum dapat berfungsi. (XCode 4.6.1) Menghabiskan beberapa jam untuk itu.
sumber