Membuat aplikasi Xamarin.iOS menggunakan API Refleksi
The MT. D Reflection API memungkinkan kelas dihiasi dengan atribut MT tersebut. D menggunakan untuk membuat layar secara otomatis. API refleksi menyediakan pengikatan antara kelas-kelas ini dan apa yang ditampilkan di layar. Meskipun API ini tidak memberikan kontrol terperinci yang dilakukan API elemen, API mengurangi kompleksitas dengan secara otomatis membangun hierarki elemen berdasarkan dekorasi kelas.
Menyiapkan MT. D
GUNUNG. D didistribusikan dengan Xamarin.iOS. Untuk menggunakannya, klik kanan pada simpul Referensi proyek Xamarin.iOS di Visual Studio 2017 atau Visual Studio untuk Mac dan tambahkan referensi ke rakitan MonoTouch.Dialog-1 . Kemudian, tambahkan using MonoTouch.Dialog
pernyataan dalam kode sumber Anda seperlunya.
Mulai menggunakan API Refleksi
Menggunakan API Refleksi semahal:
- Membuat kelas yang dihiasi dengan MT. Atribut D.
- Membuat
BindingContext
instans, meneruskannya instans kelas di atas. DialogViewController
Membuat , meneruskannya .BindingContext’s
RootElement
Mari kita lihat contoh untuk mengilustrasikan cara menggunakan API Refleksi. Dalam contoh ini, kita akan membangun layar entri data sederhana seperti yang ditunjukkan di bawah ini:
Membuat kelas dengan MT. Atribut D
Hal pertama yang perlu kita gunakan API Refleksi adalah kelas yang dihiasi dengan atribut. Atribut ini akan digunakan oleh MT. D secara internal untuk membuat objek dari API Elements. Misalnya, pertimbangkan definisi kelas berikut:
public class Expense
{
[Section("Expense Entry")]
[Entry("Enter expense name")]
public string Name;
[Section("Expense Details")]
[Caption("Description")]
[Entry]
public string Details;
[Checkbox]
public bool IsApproved = true;
}
SectionAttribute
akan menghasilkan bagian yang UITableView
sedang dibuat, dengan argumen string yang digunakan untuk mengisi header bagian. Setelah bagian dideklarasikan, setiap bidang yang mengikutinya akan disertakan di bagian tersebut, hingga bagian lain dideklarasikan.
Jenis elemen antarmuka pengguna yang dibuat untuk bidang akan bergantung pada jenis bidang dan MT. Atribut D yang mendekorasinya.
Misalnya, Name
bidang adalah string
dan dihiasi dengan EntryAttribute
. Ini menghasilkan baris yang ditambahkan ke tabel dengan bidang entri teks dan keterangan yang ditentukan. Demikian pula, IsApproved
bidang adalah bool
dengan CheckboxAttribute
, menghasilkan baris tabel dengan kotak centang di sebelah kanan sel tabel. GUNUNG. D menggunakan nama bidang, secara otomatis menambahkan spasi, untuk membuat keterangan dalam kasus ini, karena tidak ditentukan dalam atribut.
Menambahkan BindingContext
Untuk menggunakan Expense
kelas , kita perlu membuat BindingContext
. BindingContext
adalah kelas yang akan mengikat data dari kelas yang diatribusikan untuk membuat hierarki elemen. Untuk membuatnya, kami hanya membuat instansnya dan meneruskannya dalam instans kelas yang dikaitkan ke konstruktor.
Misalnya, untuk menambahkan UI yang kami deklarasikan menggunakan atribut di Expense
kelas , sertakan kode berikut dalam FinishedLaunching
metode AppDelegate
:
var expense = new Expense ();
var bctx = new BindingContext (null, expense, "Create a task");
Kemudian yang harus kita lakukan untuk membuat UI adalah menambahkan BindingContext
ke DialogViewController
dan mengaturnya sebagai RootViewController
jendela, seperti yang ditunjukkan di bawah ini:
UIWindow window;
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
window = new UIWindow (UIScreen.MainScreen.Bounds);
var expense = new Expense ();
var bctx = new BindingContext (null, expense, "Create a task");
var dvc = new DialogViewController (bctx.Root);
window.RootViewController = dvc;
window.MakeKeyAndVisible ();
return true;
}
Menjalankan aplikasi sekarang menghasilkan layar yang ditunjukkan di atas ditampilkan.
Menambahkan UINavigationController
Namun perhatikan bahwa judul "Buat tugas" yang kami teruskan ke BindingContext
tidak ditampilkan. Ini karena DialogViewController
bukan bagian UINavigatonController
dari . Mari kita ubah kode untuk menambahkan UINavigationController
sebagai jendela RootViewController,
dan menambahkan DialogViewController
sebagai akar seperti yang UINavigationController
ditunjukkan di bawah ini:
nav = new UINavigationController(dvc);
window.RootViewController = nav;
Sekarang ketika kita menjalankan aplikasi, judul muncul di bilah UINavigationController’s
navigasi seperti yang ditunjukkan oleh cuplikan layar di bawah ini:
Dengan menyertakan UINavigationController
, kita sekarang dapat memanfaatkan fitur MT lainnya. D yang navigasinya diperlukan. Misalnya, kita dapat menambahkan enumerasi ke Expense
kelas untuk menentukan kategori pengeluaran, dan MT. D akan membuat layar pilihan secara otomatis. Untuk menunjukkan, ubah Expense
kelas untuk menyertakan ExpenseCategory
bidang sebagai berikut:
public enum Category
{
Travel,
Lodging,
Books
}
public class Expense
{
…
[Caption("Category")]
public Category ExpenseCategory;
}
Menjalankan aplikasi sekarang menghasilkan baris baru dalam tabel untuk kategori seperti yang ditunjukkan:
Memilih baris menghasilkan aplikasi yang menavigasi ke layar baru dengan baris yang sesuai dengan enumerasi, seperti yang ditunjukkan di bawah ini:
Ringkasan
Artikel ini menyajikan panduan API Refleksi. Kami menunjukkan cara menambahkan atribut ke kelas untuk mengontrol apa yang ditampilkan. Kami juga membahas cara menggunakan BindingContext
data untuk mengikat dari kelas ke hierarki elemen yang dibuat, serta cara menggunakan MT. D dengan UINavigationController
.