Bagikan melalui


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:

  1. Membuat kelas yang dihiasi dengan MT. Atribut D.
  2. Membuat BindingContext instans, meneruskannya instans kelas di atas.
  3. DialogViewController Membuat , meneruskannya .BindingContext’sRootElement

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:

Dalam contoh ini, kita akan membangun layar entri data sederhana seperti yang ditunjukkan di sini

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 UINavigatonControllerdari . 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:

Sekarang ketika kita menjalankan aplikasi, judul muncul di bilah navigasi UINavigationControllers

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:

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:

Memilih baris menghasilkan aplikasi yang menavigasi ke layar baru dengan baris yang sesuai dengan enumerasi

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.