Bagikan melalui


Pola dan idiom umum di Xamarin.Mac

Di seluruh API Apple yang diekspos melalui C#, idiom dan pola tertentu muncul berulang kali. Jika Anda memiliki pengalaman dalam pemrograman dengan Xamarin.iOS, ini mungkin terlihat akrab. Dokumentasi akan sering merujuk ke pola dan idiom ini berulang kali, sehingga memiliki pemahaman yang kuat tentang mereka akan membantu Anda memahami dokumentasi yang Anda temukan.

MVC - Pengontrol Tampilan Model

Model View Controller, atau MVC singkatnya, adalah pola yang sangat umum ditemukan di seluruh Kakao. Diskusi terperinci berada di luar cakupan dokumen ini, tetapi singkatnya adalah cara menyusun aplikasi Anda menjadi komponen:

  • Objek model mewakili data yang mendasar yang dilihat dan dimanipulasi (Seperti alamat dalam buku alamat)
  • Menampilkan objek menangani gambar objek tertentu di layar dan menangani interaksi pengguna (Bidang teks memperlihatkan alamat di layar)
  • Objek pengontrol menangani interaksi antara Model dan Tampilan. Mereka mendorong perubahan Model "naik" untuk memperbarui perubahan Tampilan dan mendorong "turun" dari Tampilan saat pengguna membuat perubahan di UI.

Jika Anda terbiasa dengan MVVM (Model ViewModel) dari pustaka lain seperti WPF, Pengontrol bertindak mirip dengan ViewModel tetapi sering lebih terikat dengan elemen UI tertentu.

Detail selengkapnya dapat ditemukan di sini:

Sumber data / delegasi / subkelas

Pola lain yang sangat umum dalam Cocoa menangani penyediaan data ke elemen UI dan bereaksi terhadap interaksi pengguna. Menggunakan NSTableView sebagai contoh, Anda harus entah bagaimana menyediakan data untuk setiap baris, beberapa set elemen UI yang mewakili baris tersebut, beberapa set perilaku untuk bereaksi terhadap interaksi pengguna, dan mungkin beberapa jumlah kustomisasi. Sumber data dan pola delegasi memungkinkan Anda menangani sebagian besar kasus tanpa harus menggunakan subkelas NSTableView sendiri.

  • Properti DataSource diberi instans NSTableViewDataSource subkelas kustom yang dipanggil untuk mengisi tabel dengan data (melalui GetRowCount dan GetObjectValue).

  • Properti Delegate diberi instans NSTableViewDelegate subkelas kustom yang menyediakan tampilan untuk objek model tertentu (melalui GetViewForItem) dan menangani interaksi UI (melalui DidClickTableColumn, MouseDownInHeaderOfTableColumn, dll).

Dalam beberapa kasus, Anda mungkin ingin menyesuaikan kontrol dengan cara di luar kait yang diberikan dalam delegasi atau sumber data dan Anda dapat mensubkelas tampilan secara langsung. Namun, berhati-hatilah, dalam banyak kasus mengesampingkan perilaku default kemudian akan mengharuskan Anda untuk menangani semua perilaku itu sendiri (menyesuaikan perilaku pemilihan mungkin mengharuskan Anda untuk mengimplementasikan semua perilaku pemilihan sendiri).

Di Xamarin.iOS, beberapa API, seperti UITableView telah diperluas dengan properti yang mengimplementasikan delegasi dan sumber data (UITableViewSource). Ini untuk mengatasi batasan umum bahwa satu kelas C# hanya dapat memiliki satu kelas dasar, dan surfacing protokol kami dilakukan melalui kelas dasar.

Untuk informasi selengkapnya tentang bekerja dengan tabel VIews dalam aplikasi Xamarin.Mac, silakan lihat dokumentasi Tampilan Tabel kami.

Protokol

Protokol dalam Objective-C dapat dibandingkan dengan antarmuka di C#, dan dalam banyak kasus digunakan dalam situasi yang sama. Misalnya contoh di NSTableView atas, delegasi dan sumber data sebenarnya adalah protokol. Xamarin.Mac mengekspos ini sebagai kelas dasar dengan metode virtual yang dapat Anda ambil alih. Perbedaan utama antara antarmuka dan Objective-C protokol C# adalah bahwa beberapa metode dalam protokol mungkin opsional untuk diterapkan. Anda harus melihat dokumentasi dan/atau definisi API untuk menentukan apa yang bersifat opsional.

Informasi selengkapnya, silakan lihat dokumentasi Delegasi, Protokol, dan Peristiwa kami.