Apa tujuan menggunakan IBOutlets dan IBActions di Xcode dan Interface Builder?
Apakah ada bedanya jika saya tidak menggunakan IBOutlets dan IBActions?
Cepat:
@IBOutlet weak var textField: UITextField!
@IBAction func buttonPressed(_ sender: Any) { /* ... */ }
Tujuan-C:
@property (nonatomic, weak) IBOutlet UITextField *textField;
- (IBAction)buttonPressed:(id)sender { /* ... */ }
Jawaban:
IBAction
danIBOutlet
makro didefinisikan untuk menunjukkan variabel dan metode yang dapat disebut dalam Interface Builder.IBAction
memutuskan untukvoid
danIBOutlet
memutuskan untuk tidak melakukan apa pun, tetapi mereka menandakan ke Xcode dan pembuat antarmuka bahwa variabel dan metode ini dapat digunakan dalam pembuat antarmuka untuk menghubungkan elemen UI ke kode Anda.Jika Anda tidak akan menggunakan Interface Builder sama sekali, maka Anda tidak memerlukannya dalam kode Anda, tetapi jika Anda akan menggunakannya, maka Anda perlu menentukan
IBAction
metode yang akan digunakan dalam IB danIBOutlet
untuk objek yang akan digunakan di IB.sumber
IBOutlet
tidak menyelesaikanid
. Pertimbangkan ini:IBOutlet UILabel *nameLabel;
- jikaIBOutlet
diselesaikanid
, maka kode itu akan membacaid UIlabel *namelabel;
yang menghasilkan kesalahan kompiler. Seperti yang saya nyatakan pada awalnya,IBOutlet
tidak ada keputusan.Cara tradisional untuk menandai metode sehingga akan muncul di Interface Builder, dan Anda dapat menyeret koneksi ke sana, telah membuat metode pengembalian jenis IBAction. Namun, jika Anda membuat metode Anda batal, sebagai gantinya (IBAction # define'd menjadi batal), dan memberikan argumen (id), metode ini masih terlihat. Ini memberikan fleksibilitas ekstra, al
Semua 3 ini terlihat dari Interface Builder:
Lihat Panduan Pengguna Pembuat Antarmuka Apple untuk detail, khususnya bagian yang berjudul Xcode Integration.
sumber
Anda perlu menggunakan IBOutlet dan IBAction jika Anda menggunakan pembangun antarmuka (karenanya awalan IB) untuk komponen GUI Anda. IBOutlet diperlukan untuk mengaitkan properti dalam aplikasi Anda dengan komponen dalam IB, dan IBAction digunakan untuk memungkinkan metode Anda dikaitkan dengan tindakan dalam IB.
Misalnya, Anda mendefinisikan tombol dan label di IB. Untuk secara dinamis mengubah nilai label dengan menekan tombol, Anda akan menentukan tindakan dan properti di aplikasi Anda yang mirip dengan:
Kemudian di IB Anda akan menghubungkan myLabel dengan label dan menghubungkan metode pushme dengan tombol. Anda membutuhkan IBAction dan IBOutlet agar koneksi ini ada di IB.
sumber
(void)
metode di Interface Builder juga.Interface Builder menggunakannya untuk menentukan anggota dan pesan apa yang dapat 'dihubungkan' ke kontrol antarmuka yang Anda gunakan di jendela / tampilan Anda.
IBOutlet dan IBAction murni ada di sana sebagai penanda yang dicari oleh Interface Builder ketika mem-parsing kode Anda pada waktu desain, mereka tidak memiliki pengaruh pada kode yang dihasilkan oleh kompiler.
sumber
Berlari ke dalam diagram sambil melihat kode kunci-nilai, berpikir itu mungkin membantu seseorang. Ini membantu dengan pemahaman tentang apa itu IBOutlet.
Dengan melihat alurnya, orang dapat melihat bahwa IBOutlets hanya ada di sana untuk mencocokkan nama properti dengan nama kontrol di file Nib.
sumber
Outlet adalah tautan dari kode ke UI. Jika Anda ingin menampilkan atau menyembunyikan elemen UI, jika Anda ingin mendapatkan teks dari bidang teks atau mengaktifkan atau menonaktifkan elemen (atau seratus hal lainnya) Anda harus mendefinisikan outlet dari objek itu di sumber dan menautkan outlet itu melalui "objek antarmuka" ke elemen UI. Setelah itu Anda bisa menggunakan outlet sama seperti variabel lain dalam pengkodean Anda.
IBAction - metode khusus yang dipicu oleh objek antarmuka pengguna. Interface Builder mengenali mereka.
Untuk informasi lebih lanjut, lihat Apple Documents
sumber
IBAction dan IBOutlets digunakan untuk menghubungkan antarmuka Anda yang dibuat di Interface Builder dengan pengontrol Anda. Jika Anda tidak akan menggunakan Interface Builder dan membuat antarmuka Anda sepenuhnya dalam kode, Anda bisa membuat program tanpa menggunakannya. Namun pada kenyataannya sebagian besar dari kita menggunakan Interface Builder, setelah Anda ingin mendapatkan interaktivitas di antarmuka Anda, Anda harus menggunakan IBActions dan IBoutlets.
sumber
IBOutlet
IBAction
@ - IB pola Dinamis - Pembuat Antarmuka
sumber
Salah satu komentar teratas pada Pertanyaan ini secara khusus menanyakan:
Pertanyaan ini dijawab dengan baik oleh NSHipster:
IBAction
https://nshipster.com/ibaction-iboutlet-iboutletcollection/#ibaction
IBOutlet:
https://nshipster.com/ibaction-iboutlet-iboutletcollection/#iboutlet
sumber
ketika Anda menggunakan Interface Builder, Anda dapat menggunakan Inspektur Koneksi untuk mengatur acara dengan penangan acara, penangan acara seharusnya fungsi yang memiliki pengubah IBAction. Tampilan dapat dihubungkan dengan referensi untuk tipe yang sama dan dengan pengubah IBOutlet.
sumber