Saya baru saja membuat aplikasi dan sudah mulai menghubungkan @ IBOutlet ke storyboard. Saya menghubungkan beberapa dari mereka ke label dalam Sel Prototipe UITableViewCell dengan Gaya Dasar. Ketika saya menghubungkannya meskipun saya mendapatkan kesalahan ini di Storyboard:
Outlet detailText dari TableViewController ke UILabel tidak valid. Outlet tidak dapat dihubungkan ke konten berulang.
Adakah yang bisa membantu saya? Saya telah mengaturnya dengan cara yang selalu saya lakukan dengan sukses, tetapi kali ini telah menghapus kesalahan ini.
ios
storyboard
Tomblasta
sumber
sumber
Jawaban:
Buat subclass sel tampilan tabel dan atur sebagai kelas prototipe. Tambahkan outlet ke kelas itu dan hubungkan mereka. Sekarang ketika Anda mengkonfigurasi sel Anda dapat mengakses outlet.
sumber
Ada dua jenis sel tampilan tabel yang disediakan untuk Anda melalui storyboard, yaitu Dynamic Prototypes dan Static Cells
1. Prototipe Dinamis
Dari namanya, jenis sel ini dihasilkan secara dinamis. Mereka dikendalikan melalui kode Anda, bukan storyboard. Dengan bantuan delegasi tampilan tabel dan sumber data, Anda dapat menentukan jumlah sel, ketinggian sel, prototipe sel secara terprogram.
Saat Anda menyeret sel ke tampilan tabel Anda, Anda mendeklarasikan prototipe sel. Anda kemudian dapat membuat jumlah sel apa pun berdasarkan prototipe ini dan menambahkannya ke tampilan tabel melalui
cellForRow
metode, secara terprogram. Keuntungan dari ini adalah bahwa Anda hanya perlu mendefinisikan 1 prototipe alih-alih membuat masing-masing dan setiap sel dengan semua tampilan ditambahkan kepada mereka sendiri (Lihat sel statis).Jadi dalam hal ini, Anda tidak dapat menghubungkan elemen UI pada prototipe sel ke pengontrol tampilan Anda. Anda hanya akan memulai satu objek pengontrol tampilan, tetapi Anda mungkin memiliki banyak objek sel yang diinisiasi dan ditambahkan ke tampilan tabel Anda. Tidak masuk akal untuk menyambungkan prototipe sel ke pengontrol tampilan karena Anda tidak dapat mengontrol banyak sel dengan satu koneksi pengontrol tampilan. Dan Anda akan mendapatkan kesalahan jika melakukannya.
Untuk memperbaiki masalah ini, Anda perlu menghubungkan label prototipe Anda ke
UITableViewCell
objek. AUITableViewCell
juga merupakan prototipe sel dan Anda dapat menginisiasi objek sel sebanyak yang Anda inginkan, masing-masingnya kemudian dihubungkan ke tampilan yang dihasilkan dari prototipe sel tabel storyboard Anda.Terakhir, dalam
cellForRow
metode Anda , buat sel khusus dariUITableViewCell
kelas, dan lakukan hal-hal menyenangkan dengan label2. Sel Statis
Di sisi lain, sel statis memang dikonfigurasi melalui storyboard. Anda harus menyeret elemen UI ke setiap sel untuk membuatnya. Anda akan mengendalikan nomor sel, ketinggian, dll dari storyboard. Dalam hal ini, Anda akan melihat tampilan tabel yang persis sama dari ponsel Anda dibandingkan dengan apa yang Anda buat dari storyboard. Sel-sel statis lebih sering digunakan untuk pengaturan halaman, yang sel-selnya tidak banyak berubah.
Untuk mengontrol elemen UI untuk sel statis, Anda memang perlu menghubungkannya langsung ke pengontrol tampilan Anda, dan mengaturnya.
sumber
+100
Jika Anda menggunakan tampilan tabel untuk menampilkan Pengaturan dan opsi lain (seperti yang dilakukan aplikasi Pengaturan bawaan), maka Anda dapat mengatur Konten Tampilan Tabel Anda ke Sel Statis di bawah Inspektur Atribut . Juga, untuk melakukan ini, Anda harus menyematkan Tampilan Tabel Anda dalam instance UITableViewController.
sumber
Atau Anda tidak harus menggunakan IBOutlet untuk merujuk ke objek dalam tampilan. Anda bisa memberi Label di tableViewCell nilai Tag, misalnya mengatur Tag ke 123 (ini bisa dilakukan oleh inspektur atribut). Kemudian Anda dapat mengakses label dengan
sumber
Dengan saya, saya punya
UIViewcontroller
, dan ke dalamnya saya memiliki tampilan tabel dengan sel kustom di atasnya. Aku peta gerai saya UILabel keUItableviewcell
keUIViewController
kemudian mendapat kesalahan.sumber
Seperti kebanyakan orang telah menunjukkan bahwa subkelas
UITableViewCell
menyelesaikan masalah ini. Tetapi alasan ini tidak diizinkan karena sel prototipe ( UITableViewCell ) ditentukan oleh Apple dan Anda tidak dapat menambahkan outlet sendiri ke dalamnya.sumber
Terkadang Xcode tidak dapat mengontrol koneksi outlet sel dengan benar.
Entah bagaimana label / tombol sel saya saat ini telah menghubungkan sel lain, saya hanya menghapusnya dan kesalahan hilang.
sumber
Klik pada simulator, Navigasikan ke Jendela dan aktifkan Bezel Perangkat
sumber