Di layar yang kompleks (View Controllers) saya biasa memisahkan semuanya menjadi bagian-bagian yang lebih kecil (saya menyebutnya widget). Widget ini pada dasarnya terdiri dari a MyWidget.h
dan MyWidget.m
file serta MyWidget.xib
file, di mana elemen root adalah a UIView
dan kelas MyWidget adalah Pemilik File dari UIView. Di init widget ini saya melakukan a loadNibNamed
.
Dalam View Controller saya, saya kemudian melakukan [[MyWidget alloc] init]
, yang saya tambahkan ke tampilan utama View Controller sebagai sub view. Sejauh ini, ini bekerja dengan sempurna.
Saya sekarang bertanya-tanya, bagaimana melakukan hal yang sama dengan storyboard, karena saya tidak bisa benar-benar mulai menyeret ke suatu UIView
tempat, saya selalu harus memulai dengan UIViewController
, yang tidak saya inginkan.
Jika tidak ada cara yang mungkin untuk melakukan ini dengan Storyboard, dapatkah saya melakukannya dengan cara lama, dengan menggunakan Storyboard untuk layar utama dan segmen saya, dan menggunakan file .xib terpisah untuk menentukan tampilan kustom?
sumber
xib
s untuk pengontrol tampilan Anda secara terpisah dan bukan di papan cerita?Jawaban:
Meletakkan widget / tampilan dalam file .xib yang terpisah dapat dilakukan, dan ini sesuai terutama jika Anda mungkin ingin merujuk tampilan yang sama dari beberapa Pengontrol Tampilan.
Namun, terkadang Anda ingin melihat tampilan / widget tambahan dalam storyboard yang sama, dan itu memungkinkan. Inilah cara Anda melakukannya:
Pilih pengontrol tampilan Anda di IB (klik pada bilah hitam di bawah tampilan), lalu seret UIView dari Perpustakaan Objek ke dalam bilah hitam:
Saat tampilan ada di bilah hitam, itu dibuat seperti tampilan lain di IB tetapi tidak ditambahkan ke hierarki tampilan Anda sampai Anda melakukannya dalam kode. Ubah kelas tampilan agar sesuai dengan subkelas Anda sendiri jika perlu:
Anda dapat menghubungkannya ke pengontrol tampilan seperti saat Anda menghubungkan tampilan lainnya:
Tampilan tambahan muncul di Kerangka Dokumen Anda dan Anda juga dapat menghubungkan tindakan dan referensi di sana:
Sekarang, masalah yang tersisa adalah Anda tidak dapat benar-benar melihat tampilan tersebut tidak peduli berapa kali Anda mencoba mengklik atau mengklik dua kali, yang akan menggagalkan seluruh tujuan untuk meletakkannya di storyboard yang sama. Untungnya ada dua solusi yang saya ketahui.
Solusi pertama adalah menyeret kembali tampilan dari bilah hitam ke tampilan pengontrol tampilan Anda, mengeditnya, lalu menyeretnya kembali ke bilah hitam setelah Anda selesai. Ini merepotkan tapi bisa diandalkan.
Solusi lain lebih rumit, tetapi saya lebih suka karena ini memungkinkan saya melihat semua pandangan saya pada saat yang sama:
Seret UITableView dari Object Library ke tampilan yang baru Anda tambahkan.
Kemudian seret UITableViewCell ke UITableView itu.
Setelah Anda melakukannya, tampilan Anda muncul secara ajaib di samping, tetapi Anda memiliki UITableView yang tidak Anda inginkan. Anda dapat mengubah ukurannya menjadi 0x0, atau Anda dapat menghapusnya dan UIView Anda (biasanya) akan tetap terlihat.
Terkadang tampilan sekunder akan disembunyikan lagi di IB. Anda dapat mengulangi langkah-langkah di atas jika Anda menghapus UITableView, atau jika UITableView masih dalam hierarki, Anda hanya perlu mengklik UITableViewCell dan tampilan akan muncul lagi.
Metode kedua berfungsi untuk UIViews tetapi tidak begitu baik untuk UIToolbars dan tidak mungkin untuk UIButtons, jadi solusi terbersih yang saya temukan ketika Anda perlu memasukkan banyak subview yang berbeda adalah dengan melampirkan UIView sekunder tunggal ke pengontrol tampilan Anda sebagai wadah yang tidak pernah ditampilkan, letakkan semua tampilan sekunder Anda di sana, dan gunakan trik UITableViewCell untuk membuat semuanya terlihat. Saya mengubah ukuran UITableView tiruan saya menjadi 0x0 agar tidak terlihat. Berikut tangkapan layar tentang bagaimana semuanya terlihat bersama:
sumber
Jika Anda hanya ingin membuat pengontrol tampilan Anda di tempat lain (dan bukan di papan cerita Anda), maka ada cara yang cukup sederhana untuk melakukannya:
1) Buat
CustomViewController
s Anda (abcdController
dalam kode yang saya coba) dengan masing-masingxib
seperti biasa.2) Tambahkan
UIViewController
(atau apa pun superclass AndaCustomViewController
) ke papan cerita.3) Atur CustomClass ke
CustomViewController
alih-alihUIViewController
seperti yang ditunjukkan di sini:4) Akhirnya, di Anda
viewDidLoad
, muat kustomxib
dan Anda selesai.sumber
loadNibNamed
dalam kasus itu ... XOSaya pikir Anda dapat melakukan sesuatu seperti ini untuk mendapatkan contoh viewcontroller tertentu dari Storyboard dan menggunakan view di atasnya.
Semoga ini membantu
Terima kasih Vijay
sumber