Tidak dapat memasukkan koneksi outlet baru: Tidak dapat menemukan informasi untuk kelas yang bernama

281

Saya mendapat kesalahan pada Xcode mengatakan bahwa tidak ada informasi tentang pengontrol tampilan.

Tidak dapat memasukkan koneksi outlet baru: Tidak dapat menemukan informasi untuk kelas yang bernama

Mengapa ini terjadi?

Tangkapan layar 1

Ege Kaan Gürkan
sumber
2
Saya pikir ini telah ditanyakan sebelumnya: stackoverflow.com/questions/17735182/…
Tapani
Saya cukup berhenti dari Xcode, lalu membukanya kembali. kompiler akan memuat ulang semua file dan dapat mendeteksi file yang Anda cari
Jane chicken
Periksa Anda belum memiliki outlet yang tidak terhubung dalam file controller tampilan Anda. Saya menemukan bahwa saya melakukannya. Setelah saya menghapusnya saya tidak punya masalah.
Kex
Bagi saya tidak ada solusi di atas yang berhasil. Saya harus menghapus view controller, yang saya salin dan tempel lagi di storyboard saya untuk menggunakannya kembali. Kemudian saya menyeret view controller baru di storyboard dan semuanya baik-baik saja :). Saya harap ini dapat membantu seseorang dengan masalah yang sama.
Arslan Saleem
Ini adalah BUG di XCode, dan saya tidak tahu mengapa mereka tidak memperbaikinya. Anda harus menutup XCode dan membuka kembali. Ketika Anda mencoba lagi untuk meletakkan outlet, tetapi kali ini tinggalkan sekelompok ENTER sebelum membuatnya. Anda tidak perlu menghapus apa pun atau membuang-buang waktu untuk pilihan lain ... Ini akan menyelesaikan masalah Anda.
mavesonzini

Jawaban:

692

Berikut adalah beberapa hal yang dapat memperbaikinya (dengan meningkatnya tingkat kesulitan):

  • Bersihkan proyek ( Produk> Bersih )
  • Tempel secara manual

    @IBOutlet weak var viewName: UIView!
    // or
    @IBAction func viewTapped(_ sender: Any) { }

    dan kontrol tarik ke sana. (Ubah tipe sesuai kebutuhan.) Lihat juga ini .

  • Tutup sepenuhnya Xcode dan mulai ulang proyek Anda.

  • Hapus folder Data Berasal (Buka Xcode> Preferensi > Lokasi dan klik panah abu-abu oleh folder Data Berasal. Kemudian hapus folder proyek Anda.)
  • Klik hapus di kelas, hapus referensi (bukan Pindah ke Sampah), dan tambahkan kembali. (lihat jawaban ini )
Suragch
sumber
jangan lupa untuk menghapus kelas pada pengontrol tampilan sehingga langkah ini akan berhasil
reggie
8
Tidak ada langkah-langkah ini yang berfungsi untuk saya di Xcode 8.3.2. Saya harus "Tampilkan Identitas Inspektur"> membersihkan bidang "Kelas" (sorot nama kelas kustom dan hapus)> masukkan kembali nama kelas di bidang "Kelas". Xcode secara otomatis melengkapi nama kelas. Saya kemudian tekan enter.
PeqNP
Tambahkan baris alias purgederiveddata='rm -rf ~/Library/Developer/Xcode/DerivedData/*'ke ~ / .bashrc Anda untuk menggunakan perintah ini purgederiveddatauntuk menghapus dengan satu perintah
eskimwier
Saya menemukan cara lain untuk memperbaiki masalah ini, ini terjadi pada saya ketika saya mengubah beberapa pengaturan build untuk meningkatkan kecepatan build saya. stackoverflow.com/a/50555888/2952876
Mathias Van Houtte
Saya sangat mendorong Anda semua untuk mencoba solusi saya di bawah ini. Akan patah hati mengetahui bahwa orang harus me-restart komputer mereka untuk bug yang sering muncul.
Stephen Paul
134

Atau jika tidak ada di atas yang berfungsi, ketikkan nama outlet ke dalam file terlebih dahulu @IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!dan kemudian klik dan seret dari outlet di nib ke variabel yang baru saja Anda buat secara pemrograman. Itu harus bekerja tanpa kesulitan membersihkan, membangun, dan menghapus apa pun.

Stephen Paul
sumber
4
seringkali solusi yang lebih cepat daripada menghabiskan waktu untuk membersihkan, membangun, dll. terima kasih.
mohonish
1
Sangat bagus dan setelah Anda melakukan ini, Otomatis mulai muncul, terima kasih.
AmJa
1
Pertama-tama sambungkan Objek XIB Anda ke IBoutlets.Kemudian coba sambungkan batasan mereka, IBOutlets. tanpa ini akan selalu muncul kesalahan.
Chandramani
Ini juga dapat membuat perbedaan di mana Anda mencoba memasukkan outlet baru. Sebab, bagian atas daftar (di mana ada ruang kosong di atas) berfungsi; tengah daftar tidak.
Richard
1
Ini harus ditandai sebagai jawaban terbaik. Lebih mudah, lebih cepat dan lebih dapat diandalkan. Juga berfungsi sepanjang waktu! Kerja bagus dan terima kasih @StephenPaul
denis_lor
51

Cukup lakukan dua langkah berikut untuk menyingkirkan kesalahan ini

  1. Proyek bersih menggunakan Produk> bersih
  2. Jalankan proyek

Sekarang coba tambahkan action atau outlet. Itu dia.

Selamat Coding

Akshaykumar Maldhure
sumber
4
Aneh ... dua langkah mudah ini membantu menyelesaikan masalah bagi saya juga. Jadi saya sarankan, untuk mencoba langkah-langkah mudah ini terlebih dahulu :-)
crosscode
49

Tidak ada tips dalam jawaban terbaik yang bekerja untuk saya. Menjadi gila. Kemudian perhatikan bahwa Asisten Editor entah bagaimana telah diatur ke Manual dan saya berada di ViewController.swift (Antarmuka) alih-alih file ViewController.swift.

Mengubah itu dan masalah terpecahkan. Agak memalukan, tapi hei, kita semua belajar.

masukkan deskripsi gambar di sini

Joshua Dance
sumber
1
Jawaban penyelamat hidup! Tidak ada jawaban lain yang menyelesaikannya sekali dan selamanya. Sayang sekali bahwa deskripsi kesalahan tidak memberikan petunjuk bahwa Anda mungkin berada di file worng. Terima kasih. +1 untuk gambar itu membuatnya jelas.
Pauloco
Saya melihat sesuatu yang sangat mirip, tetapi berbeda: Di jalur di atas tempat nama kelas ditampilkan, hanya ada nama kelas, tetapi hilang awal jalan sebagai myProject> appName> controller dan kemudian kelas. Saya memilih kelas lain lalu kembali ke kelas yang bermasalah, dan semuanya OK
claude31
15

Inilah langkah-langkah yang dipecahkan untuk saya:

  1. Hapus referensi nama Kelas dari View (storyboard / xib) dan simpan;
  2. Tambahkan lagi nama Kelas dan simpan;
  3. Bersih dan Bangun;

Selesai!

Almeida
sumber
10

Saya memiliki masalah yang sama. Saya lelah di bawah solusi tetapi tidak berhasil:

  1. Clean Project (cmd + shift + k) dan bahkan Clean Project Build (cmd + shift + alt + k)
  2. Deleted Derived data dan Module Cache content

Di bawah ini solusi untuk masalah ini:

  1. Pindah ke file kode sumber dan tulis IBOutlet / IBActionsecara manual (salin tempel disukai)

Tangkapan layar 1

  1. Kemudian pindah ke file Storyboard dan Buka Utilitesjendela
  2. Pergi ke Connection Inspector
  3. Kemudian Hubungkan IBOutletdan IBActionditulis dalam file sumber dengan Interface Builder.

Tangkapan layar 2

Jayprakash Dubey
sumber
Menyeret Outlet / Tindakan tidak berfungsi sama sekali, tetapi setelah saya melakukannya secara manual seperti ini, semuanya bekerja dengan baik lagi.
Jason
Ini adalah metode alternatif standar untuk membuat koneksi. Dalam hal aksi tombol radio, satu-satunya cara, AFAIK. Di storyboard, Anda juga bisa mengklik kanan pada controller, menemukan fungsinya, dan membuat koneksi.
singkat
8

Saya memiliki masalah yang sama. Saya menyadari daripada dalam Manualitem X-Code dipilih ketika saya mencoba membuat outlet dengan kontrol-tarik

masukkan deskripsi gambar di sini

Setelah saya atur ke otomatis itu berhasil

masukkan deskripsi gambar di sini

Vitalii
sumber
Saya punya masalah persis ini. Bahkan tidak menyadari perbedaannya.
Joshua Dance
Bagus!!! Saya telah kehilangan banyak waktu untuk proyek pembersihan bug ini, me-restart xCode, menghapus data turunan, tapi itu hanya solusi yang bekerja untuk saya! Terima kasih banyak!
Anton Eregin
7

Saya memecahkan masalah ini dengan secara terprogram membuat Label dan Textfields, dan kemudian Command-Draged dari lingkaran kosong kecil di sebelah kiri kode ke komponen di Storyboard. Untuk mengilustrasikan poin saya: saya menulis @IBOutlet weak var HelloLabel: UILabel!, lalu menekan Command dan menyeret kode ke dalam komponen di storyboard.

KuboAndTwoStrings
sumber
Solusi ini sangat cocok untuk saya! Terlepas dari @IBOutlet weak var myButton: UIButtonsaya menggunakan proses yang sama untuk mengatur @IBAction func doSomething(_ sender: Any) { }dan kemudian menghubungkan func ini ke UIButton di storyboard saya. Terima kasih telah berbagi @KuboAndTwoStrings ini
Nii Mantse
6
  1. Tutup proyek yang sedang Anda kerjakan.
  2. Hapus folder 【DerivedData】 proyek Anda. (Folder ini mungkin di dalam folder proyek Anda, atau di dalam
    ~/Library/Developer/Xcode/DerivedData/
    (proyek Anda) /) atau di tempat lain yang Anda siapkan.
  3. mulai ulang proyek Anda.
Ali
sumber
4

Saya menemukan solusi yang lebih mudah karena bug ini dapat ditemukan di XCODE 9.

Langkah pertama buka viewcontroller Anda dan tulis properti yang ingin Anda sambungkan secara manual seperti contoh di bawah ini, pastikan Anda menggunakan format di bawah ini.

@IBOutlet pertanyaan lemah lemahStackView: UIStackView!

Langkah dua pergi ke storyboard Anda dan sambungkan pandangan Anda atau apa pun yang Anda coba sambungkan ke properti yang Anda buat pada langkah 1.

Di atas akan menghemat waktu Anda menghapus dan membersihkan data yang diturunkan.

Visi Mkhabela
sumber
3

Saya mendapatkan bug ini ketika saya mengganti nama kelas. Lalu saya menyelesaikannya hanya dengan mengikuti langkah-langkah di bawah ini

  • Dalam Menu Xcode -> Product->Clean
  • Restart Xcode
Vinoth Vino
sumber
ini satu-satunya solusi yang cukup lucu buat saya.
Joseph Astrahan
2

Dalam kasus saya ini adalah bc saya memilih file UIViewController baru di IB dan kemudian mencoba untuk ctrl-drag ke controller baru ini tanpa terlebih dahulu menghapus koneksi sebelumnya di Connections Inspector. Hapus yang pertama dan coba lagi.

Marius Waldal
sumber
2

Bagi saya itu berfungsi ketika pada tab kanan> Pelokalan, saya mencentang kotak Bahasa Inggris. Awalnya hanya Base yang diperiksa. Setelah itu saya tidak punya masalah lagi. Semoga ini membantu!

lmicu
sumber
2

masukkan deskripsi gambar di sini

Saya memilih opsi Otomatis untuk memilih file ViewController.swift. Dan kemudian saya bisa mengambil outlet.

Arpit B Parekh
sumber
2

Silakan lakukan dua langkah berikut ini hanya untuk menghilangkan kesalahan ini.

1.  Clean Project using Product -> clean.
2.  Run the Project.

Sekarang coba tambahkan / Hubungkan tindakan atau outlet.

Bekerja dengan baik untukku berkali-kali.

Devendra Singh
sumber
1

Itu terjadi ketika saya menambahkan Swiftfile ke Objective-Cproyek.
Jadi, dalam situasi ini yang dapat Anda lakukan adalah. .

  • Select MY_FILE.Swift >> Delete >> Remove Reference
  • Select MY_FOLDER >> Add MY_FILE.Swift
  • Voila ! You are good to go .
Roy
sumber
Untuk ini! Saya sudah mencoba untuk menyelesaikan masalah ini sendiri selama setengah jam sudah lol. Masalah seperti ini di Storyboards mudah diperbaiki. Terima kasih! Ini sangat membantu saya!
Glenn
0

Solusi paling sederhana: - Saya menggunakan xCode 7 dan iOS 9.

di .m Anda

hapus #import "VC.h"

simpan .m dan tautkan outlet Anda lagi berfungsi baik.

Ahmed Abdallah
sumber
0

Saya menggunakan xCode 7 dan iOS 9.

di .m Anda

menghapus #import "VC.h"

simpan .m dan tautkan outlet Anda lagi berfungsi baik.

di .m Anda

Menambahkan #import "VC.h"

simpan .m

Ahmed Abdallah
sumber
0

Tak satu pun dari ini bekerja untuk saya, tetapi saya tahu ini.

Di dalam storyboard saya menyalin ViewController yang sesuai ke clipboard dan menghapusnya, setelah itu saya menempelkannya lagi.

Tiba-tiba semuanya bekerja seperti pesona lagi!

Markus
sumber