Pemberitahuan di Xamarin.Mac
Artikel ini membahas cara bekerja dengan pemberitahuan dalam aplikasi Xamarin.Mac. Ini menjelaskan membuat dan menampilkan pemberitahuan dari kode C# dan menanggapi interaksi pengguna.
Saat bekerja dengan C# dan .NET dalam aplikasi Xamarin.Mac, Anda memiliki akses ke Pemberitahuan yang sama dengan yang digunakan Objective-C pengembang dan Xcode .
Pemberitahuan adalah jenis dialog khusus yang muncul ketika masalah serius terjadi (seperti kesalahan) atau sebagai peringatan (seperti bersiap untuk menghapus file). Karena pemberitahuan adalah dialog, pemberitahuan juga memerlukan respons pengguna sebelum dapat ditutup.
Dalam artikel ini, kita akan membahas dasar-dasar bekerja dengan Pemberitahuan dalam aplikasi Xamarin.Mac.
Pengantar Pemberitahuan
Pemberitahuan adalah jenis dialog khusus yang muncul ketika masalah serius terjadi (seperti kesalahan) atau sebagai peringatan (seperti bersiap untuk menghapus file). Karena Pemberitahuan mengganggu pengguna karena mereka harus diberhentikan sebelum pengguna dapat melanjutkan tugas mereka, hindari menampilkan pemberitahuan kecuali benar-benar diperlukan.
Apple menyarankan panduan berikut:
- Jangan gunakan pemberitahuan hanya untuk memberi pengguna informasi.
- Jangan tampilkan pemberitahuan untuk tindakan umum yang tidak dapat diurungkan. Bahkan jika situasi itu dapat menyebabkan kehilangan data.
- Jika situasi layak untuk pemberitahuan, hindari menggunakan elemen atau metode UI lainnya untuk menampilkannya.
- Ikon Perhatian harus digunakan dengan hemat.
- Jelaskan situasi pemberitahuan dengan jelas dan singkat dalam pesan pemberitahuan.
- Nama Tombol Default harus sesuai dengan tindakan yang Anda jelaskan dalam pesan pemberitahuan Anda.
Untuk informasi selengkapnya, lihat bagian Pemberitahuan dari Pedoman Antarmuka Manusia OS X Apple
Anatomi Pemberitahuan
Seperti yang dinyatakan di atas, pemberitahuan harus ditampilkan kepada pengguna aplikasi Anda ketika masalah serius terjadi atau sebagai peringatan untuk potensi kehilangan data (seperti menutup file yang tidak disimpan). Di Xamarin.Mac, pemberitahuan dibuat dalam kode C#, misalnya:
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Critical,
InformativeText = "We need to save the document here...",
MessageText = "Save Document",
};
alert.RunModal ();
Kode di atas menampilkan pemberitahuan dengan ikon aplikasi yang ditujukan pada ikon peringatan, judul, pesan peringatan, dan satu tombol OK :
Apple menyediakan beberapa properti yang dapat digunakan untuk menyesuaikan pemberitahuan:
- AlertStyle mendefinisikan jenis pemberitahuan sebagai salah satu hal berikut:
- Peringatan - Digunakan untuk memperingatkan pengguna peristiwa saat ini atau yang akan datang yang tidak penting. Ini adalah gaya default.
- Informasi - Digunakan untuk memperingatkan pengguna tentang peristiwa saat ini atau yang akan datang. Saat ini, tidak ada perbedaan yang terlihat antara Peringatan dan Informasi
- Kritis - Digunakan untuk memperingatkan pengguna tentang konsekuensi parah dari peristiwa yang akan datang (seperti menghapus file). Jenis pemberitahuan ini harus digunakan dengan hemat.
- MessageText - Ini adalah pesan atau judul utama pemberitahuan dan harus dengan cepat menentukan situasi kepada pengguna.
- InformativeText - Ini adalah isi pemberitahuan di mana Anda harus menentukan situasi dengan jelas dan menyajikan opsi yang dapat digunakan kepada pengguna.
- Ikon - Memungkinkan ikon kustom ditampilkan kepada pengguna.
- HelpAnchor & ShowHelp - Memungkinkan pemberitahuan untuk diikat ke dalam aplikasi HelpBook dan menampilkan bantuan untuk pemberitahuan.
- Tombol - Secara default, pemberitahuan hanya memiliki tombol OK tetapi koleksi Tombol memungkinkan Anda menambahkan lebih banyak pilihan sesuai kebutuhan.
- ShowSuppressionButton - Jika
true
menampilkan kotak centang yang dapat digunakan pengguna untuk menekan pemberitahuan untuk kejadian berikutnya dari peristiwa yang memicunya. - AccessoryView - Memungkinkan Anda melampirkan subview lain ke pemberitahuan untuk memberikan informasi tambahan, seperti menambahkan Bidang Teks untuk entri data. Jika Anda mengatur AccessoryView baru atau memodifikasi yang sudah ada, Anda perlu memanggil
Layout()
metode untuk menyesuaikan tata letak pemberitahuan yang terlihat.
Menampilkan Pemberitahuan
Ada dua cara berbeda agar pemberitahuan dapat ditampilkan, Mengambang Bebas atau sebagai Lembar. Kode berikut menampilkan pemberitahuan sebagai mengambang bebas:
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.RunModal ();
Jika kode ini dijalankan, berikut ini ditampilkan:
Kode berikut menampilkan pemberitahuan yang sama dengan Lembar:
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.BeginSheet (this);
Jika kode ini dijalankan, berikut ini akan ditampilkan:
Bekerja dengan Tombol Pemberitahuan
Secara default, Pemberitahuan hanya menampilkan tombol OK . Namun, Anda tidak terbatas pada itu, Anda dapat membuat tombol tambahan dengan menambahkannya ke koleksi Tombol . Kode berikut membuat pemberitahuan mengambang bebas dengan tombol OK, Batal, dan Mungkin :
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
var result = alert.RunModal ();
Tombol pertama yang ditambahkan akan menjadi Tombol Default yang akan diaktifkan jika pengguna menekan tombol Enter. Nilai yang dikembalikan akan menjadi bilangan bulat yang mewakili tombol mana yang ditekan pengguna. Dalam kasus kami, nilai berikut akan dikembalikan:
- OK - 1000.
- Batal - 1001.
- Mungkin - 1002.
Jika kita menjalankan kode , berikut ini akan ditampilkan:
Berikut adalah kode untuk pemberitahuan yang sama dengan Lembar:
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
alert.BeginSheetForResponse (this, (result) => {
Console.WriteLine ("Alert Result: {0}", result);
});
Jika kode ini dijalankan, berikut ini akan ditampilkan:
Penting
Anda tidak boleh menambahkan lebih dari tiga tombol ke pemberitahuan.
Menampilkan Tombol Tekan
Jika properti Pemberitahuan ShowSuppressButton
adalah true
, pemberitahuan menampilkan kotak centang yang dapat digunakan pengguna untuk menekan pemberitahuan untuk kejadian berikutnya dari peristiwa yang memicunya. Kode berikut menampilkan pemberitahuan mengambang bebas dengan tombol tekan:
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
alert.ShowsSuppressionButton = true;
var result = alert.RunModal ();
Console.WriteLine ("Alert Result: {0}, Suppress: {1}", result, alert.SuppressionButton.State == NSCellStateValue.On);
Jika nilainya alert.SuppressionButton.State
adalah NSCellStateValue.On
, pengguna telah mencentang kotak centang Sembunyikan, jika tidak, mereka belum.
Jika kode dijalankan, berikut ini akan ditampilkan:
Berikut adalah kode untuk pemberitahuan yang sama dengan Lembar:
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
alert.ShowsSuppressionButton = true;
alert.BeginSheetForResponse (this, (result) => {
Console.WriteLine ("Alert Result: {0}, Suppress: {1}", result, alert.SuppressionButton.State == NSCellStateValue.On);
});
Jika kode ini dijalankan, berikut ini akan ditampilkan:
Menambahkan SubView Kustom
Pemberitahuan memiliki AccessoryView
properti yang dapat digunakan untuk menyesuaikan pemberitahuan lebih lanjut dan menambahkan hal-hal seperti Bidang Teks untuk input pengguna. Kode berikut membuat pemberitahuan mengambang bebas dengan bidang input teks tambahan:
var input = new NSTextField (new CGRect (0, 0, 300, 20));
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
alert.ShowsSuppressionButton = true;
alert.AccessoryView = input;
alert.Layout ();
var result = alert.RunModal ();
Console.WriteLine ("Alert Result: {0}, Suppress: {1}", result, alert.SuppressionButton.State == NSCellStateValue.On);
Baris kunci di sini adalah var input = new NSTextField (new CGRect (0, 0, 300, 20));
yang membuat Bidang Teks baru yang akan kita tambahkan pemberitahuan. alert.AccessoryView = input;
yang melampirkan Bidang Teks ke pemberitahuan dan panggilan ke Layout()
metode , yang diperlukan untuk mengubah ukuran pemberitahuan agar pas di subview baru.
Jika kita menjalankan kode, berikut ini akan ditampilkan:
Berikut adalah pemberitahuan yang sama dengan lembar:
var input = new NSTextField (new CGRect (0, 0, 300, 20));
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
alert.ShowsSuppressionButton = true;
alert.AccessoryView = input;
alert.Layout ();
alert.BeginSheetForResponse (this, (result) => {
Console.WriteLine ("Alert Result: {0}, Suppress: {1}", result, alert.SuppressionButton.State == NSCellStateValue.On);
});
Jika kita menjalankan kode ini, berikut ini akan ditampilkan:
Ringkasan
Artikel ini telah melihat secara rinci tentang bekerja dengan Pemberitahuan dalam aplikasi Xamarin.Mac. Kami melihat berbagai jenis dan penggunaan Pemberitahuan, cara membuat dan menyesuaikan Pemberitahuan dan cara bekerja dengan Pemberitahuan dalam kode C#.