cara menerapkan kotak dialog sembulan di iOS


303

Setelah perhitungan, saya ingin menampilkan kotak sembulan atau peringatan yang menyampaikan pesan kepada pengguna. Adakah yang tahu di mana saya dapat menemukan informasi lebih lanjut tentang ini?

Jawaban:


517

Ya, UIAlertViewmungkin itu yang Anda cari. Ini sebuah contoh:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No network connection" 
                                                message:@"You must be connected to the internet to use this app." 
                                               delegate:nil 
                                      cancelButtonTitle:@"OK"
                                      otherButtonTitles:nil];
[alert show];
[alert release];

Jika Anda ingin melakukan sesuatu yang lebih mewah, misalnya tampilkan UI khusus di Anda UIAlertView, Anda dapat subkelas UIAlertViewdan memasukkan komponen UI khusus dalam initmetode. Jika Anda ingin menanggapi tombol tekan setelah UIAlertViewmuncul, Anda dapat mengatur di delegateatas dan menerapkan - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndexmetode.

Anda mungkin juga ingin melihat UIActionSheet.


45
Dokumentasi Apple mengatakan "Kelas UIAlertView dimaksudkan untuk digunakan apa adanya dan tidak mendukung subklasifikasi". developer.apple.com/library/ios/#documentation/uikit/reference/…
JOM

40
Hanya komentar: dengan ARC diaktifkan, '[rilis peringatan]' tidak diperlukan (setidaknya, kompiler mengatakan demikian).
Javier Sedano

4
Subclassing UIAlertView tidak didukung untuk iOS 4 dan seterusnya
xySVerma

1
Berikut adalah contoh UIAlertView sederhana dengan delegasi, jika Anda juga memerlukan tindakan tombol
guilherme.minglini

2
Jika Anda mencari versi cepat, lihat jawaban Oscar Swanros
Rogerio Chaves

177

Orang yang berbeda yang datang ke pertanyaan ini memiliki arti berbeda dengan kotak popup. Saya sangat merekomendasikan membaca dokumentasi Tampilan Sementara . Jawaban saya sebagian besar adalah ringkasan dari ini dan dokumentasi terkait lainnya.

Lansiran (tunjukkan saya contoh)

masukkan deskripsi gambar di sini

Peringatan menampilkan judul dan pesan opsional. Pengguna harus mengakuinya (peringatan satu tombol) atau membuat pilihan sederhana (peringatan dua tombol) sebelum melanjutkan. Anda membuat lansiran dengan a UIAlertController.

Sebaiknya kutip peringatan dan saran dokumentasi tentang cara membuat lansiran yang tidak perlu.

masukkan deskripsi gambar di sini

Catatan:

Lembar Tindakan (tunjukkan saya contoh)

masukkan deskripsi gambar di sini

Lembar Tindakan memberi pengguna daftar pilihan. Mereka muncul di bagian bawah layar atau di popover tergantung pada ukuran dan orientasi perangkat. Seperti halnya lansiran, a UIAlertControllerdigunakan untuk membuat lembar tindakan. Sebelum iOS 8, UIActionSheetdigunakan, tetapi sekarang dokumentasi mengatakan:

Penting: UIActionSheet sudah ditinggalkan di iOS 8. (Perhatikan bahwa UIActionSheetDelegatejuga ditinggalkan.) Untuk membuat dan mengelola lembar tindakan dalam iOS 8 dan kemudian, sebagai gantinya menggunakan UIAlertControllerdengan preferredStyledari UIAlertControllerStyleActionSheet.

Modal View (tunjukkan saya contoh)

masukkan deskripsi gambar di sini

Tampilan modal adalah tampilan mandiri yang memiliki semua yang diperlukan untuk menyelesaikan tugas. Ini mungkin atau mungkin tidak mengambil layar penuh. Untuk membuat tampilan modal, gunakan dengan UIPresentationControllerdengan salah satu dari Gaya Presentasi Modal .

Lihat juga

Popover (tunjukkan saya contoh)

masukkan deskripsi gambar di sini

Sebuah Popover adalah pandangan yang muncul ketika keran pengguna pada sesuatu dan menghilang ketika menekan dari itu. Ini memiliki panah yang menunjukkan kontrol atau lokasi dari mana keran dibuat. Konten dapat berupa apa saja yang dapat Anda letakkan di View Controller. Anda membuat popover dengan UIPopoverPresentationController. (Sebelum iOS 8, UIPopoverControlleradalah metode yang disarankan.)

Di masa lalu popover hanya tersedia di iPad, tetapi mulai dengan iOS 8 Anda juga bisa mendapatkannya di iPhone (lihat di sini , di sini , dan di sini ).

Lihat juga

Notifikasi

masukkan deskripsi gambar di sini

Notifikasi adalah suara / getaran, peringatan / spanduk, atau lencana yang memberi tahu pengguna tentang sesuatu bahkan ketika aplikasi tidak berjalan di latar depan.

masukkan deskripsi gambar di sini

Lihat juga

Catatan tentang Android Toasts

masukkan deskripsi gambar di sini

Di Android, Toast adalah pesan singkat yang ditampilkan di layar dalam waktu singkat dan kemudian menghilang secara otomatis tanpa mengganggu interaksi pengguna dengan aplikasi.

Orang-orang yang berasal dari latar belakang Android ingin tahu apa versi Toast dari iOS. Beberapa contoh pertanyaan ini dapat dia temukan di sini , di sini , di sini , dan di sini . Jawabannya adalah tidak ada yang setara dengan Toast di iOS . Berbagai solusi yang telah disajikan meliputi:

  • Buat milik Anda sendiri dengan subclass UIView
  • Impor proyek pihak ketiga yang meniru Toast
  • Gunakan Peringatan tanpa tombol dengan timer

Namun, saran saya adalah tetap menggunakan opsi UI standar yang sudah disertakan dengan iOS. Jangan mencoba membuat aplikasi Anda terlihat dan berperilaku persis sama dengan versi Android. Pikirkan tentang cara mengemas ulang sehingga terlihat dan terasa seperti aplikasi iOS.


3
Dengan catatan tentang Android Toast masih! Bagus! Informasi ini membantu pengembang baru yang berasal dari pengembangan Android. Terima kasih!
Filipe Brito

3
Sobat, saya perlu mencetak dan membingkai ini! Anda menyelamatkan saya kemarin dan hari ini lagi: D
finngu

58

Sejak rilis iOS 8, UIAlertViewsekarang sudah usang; UIAlertController adalah penggantinya.

Berikut adalah contoh tampilannya di Swift:

let alert = UIAlertController(title: "Hello!", message: "Message", preferredStyle: UIAlertControllerStyle.alert)
let alertAction = UIAlertAction(title: "OK!", style: UIAlertActionStyle.default)
{
    (UIAlertAction) -> Void in
}
alert.addAction(alertAction)
present(alert, animated: true)
{
    () -> Void in
}

Seperti yang Anda lihat, API memungkinkan kami menerapkan panggilan balik baik untuk tindakan maupun saat kami menampilkan peringatan, yang cukup berguna!

Diperbarui untuk Swift 4.2

let alert = UIAlertController(title: "Hello!", message: "Message", preferredStyle: UIAlertController.Style.alert)
let alertAction = UIAlertAction(title: "OK!", style: UIAlertAction.Style.default)
        {
            (UIAlertAction) -> Void in
        }
        alert.addAction(alertAction)
        present(alert, animated: true)
        {
            () -> Void in
        }

@ Entalpi Haruskah presentViewController memiliki penjepit penutup dan apa perbedaan antara blok penyelesaian Anda dan hanya memiliki penyelesaian: nil?
Andrew Plummer

Tidak ada perbedaan. Itu ada blok untuk memanggil itu akan dipanggil.
Entalpi

25

Diperbarui untuk iOS 8.0

Sejak iOS 8.0, Anda harus menggunakan UIAlertController sebagai berikut:

-(void)alertMessage:(NSString*)message
{
    UIAlertController* alert = [UIAlertController
          alertControllerWithTitle:@"Alert"
          message:message
          preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction* defaultAction = [UIAlertAction 
          actionWithTitle:@"OK" style:UIAlertActionStyleDefault
         handler:^(UIAlertAction * action) {}];

    [alert addAction:defaultAction];
    [self presentViewController:alert animated:YES completion:nil];
}

Di mana diri dalam contoh saya adalah UIViewController, yang mengimplementasikan metode "presentViewController" untuk popup.

David


11

Untuk Swift 3 & Swift 4:

Karena UIAlertView sudah tidak digunakan lagi, ada cara yang baik untuk menampilkan Lansiran di Swift 3

let alertController = UIAlertController(title: NSLocalizedString("No network connection",comment:""), message: NSLocalizedString("connected to the internet to use this app.",comment:""), preferredStyle: .alert)
let defaultAction = UIAlertAction(title:     NSLocalizedString("Ok", comment: ""), style: .default, handler: { (pAlert) in
                //Do whatever you want here
        })
alertController.addAction(defaultAction)
self.present(alertController, animated: true, completion: nil)

Usang:

Ini adalah versi cepat yang terinspirasi oleh respons yang diperiksa:

Tampilkan AlertView:

   let alert = UIAlertView(title: "No network connection", 
                           message: "You must be connected to the internet to use this app.", delegate: nil, cancelButtonTitle: "Ok")
    alert.delegate = self
    alert.show()

Tambahkan delegasi ke pengontrol tampilan Anda:

class AgendaViewController: UIViewController, UIAlertViewDelegate

Ketika pengguna mengklik tombol, kode ini akan dieksekusi:

func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) {


}

UIAlertView sekarang sudah tidak digunakan lagi.
Parth Sane

7

Meskipun saya sudah menulis ikhtisar tentang berbagai jenis popup, kebanyakan orang hanya perlu Pemberitahuan.

Cara menerapkan kotak dialog popup

masukkan deskripsi gambar di sini

class ViewController: UIViewController {

    @IBAction func showAlertButtonTapped(_ sender: UIButton) {

        // create the alert
        let alert = UIAlertController(title: "My Title", message: "This is my message.", preferredStyle: UIAlertController.Style.alert)

        // add an action (button)
        alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))

        // show the alert
        self.present(alert, animated: true, completion: nil)
    }
}

Jawaban lengkap saya ada di sini .


0

Ini adalah versi C # di Xamarin.iOS

var alert = new UIAlertView("Title - Hey!", "Message - Hello iOS!", null, "Ok");
alert.Show();
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.