iOS'ta açılır iletişim kutusu nasıl uygulanır?


303

Bir hesaplamadan sonra, kullanıcıya bir mesaj ileten bir açılır pencere veya uyarı kutusu görüntülemek istiyorum. Bununla ilgili daha fazla bilgiyi nerede bulabileceğimi bilen var mı?

Yanıtlar:


517

Evet, UIAlertViewmuhtemelen aradığınız şey budur. İşte bir örnek:

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];

Daha süslü bir şey yapmak istiyorsanız, diyelim ki içinde özel bir kullanıcı arayüzü gösterin, yöntemde UIAlertViewalt sınıflama yapabilir UIAlertViewve özel kullanıcı arayüzü bileşenlerini koyabilirsiniz init. Düğmesine bastıktan sonra bir düğmeye basmak UIAlertViewistiyorsanız, delegateyukarıdakileri ayarlayabilir ve - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndexyöntemi uygulayabilirsiniz .

Ayrıca bakmak isteyebilirsiniz UIActionSheet.


45
Apple belgeleri "UIAlertView sınıfının olduğu gibi kullanılması amaçlanmıştır ve alt sınıfı desteklemez". developer.apple.com/library/ios/#documentation/uikit/reference/…
JOM

40
Sadece bir yorum: ARC etkinken, '[uyarı sürümü]' gerekli değildir (en azından derleyici bunu söyler).
Javier Sedano

4
UIAlertView alt sınıfı desteklenmez iOS 4'ten itibaren
xySVerma

1
Burada da düğmeleri eylemleri gerekiyorsa, temsilci ile basit UIAlertView bir örneğidir
guilherme.minglini

2
Eğer hızlı bir versiyonu için aradığınız halinde, kontrol Oscar Swanros' cevabını
Rogerio Chaves

177

Bu soruya gelen farklı kişiler, bir açılır kutu ile farklı şeyler ifade eder. Geçici Görünüm belgelerini okumanızı şiddetle tavsiye ederim . Cevabım büyük ölçüde bu ve ilgili diğer belgelerin bir özetidir.

Uyarı (bana bir örnek göster)

resim açıklamasını buraya girin

Uyarılar bir başlık ve isteğe bağlı bir mesaj görüntüler. Kullanıcı devam etmeden önce bunu kabul etmeli (tek tuşla uyarı) veya basit bir seçim yapmalıdır (iki tuşla uyarı). İle bir uyarı oluşturursunuz UIAlertController.

Gereksiz uyarılar oluşturma konusunda belgelerin uyarı ve tavsiyelerine değinmeye değer.

resim açıklamasını buraya girin

Notlar:

Eylem Sayfası (bana bir örnek göster)

resim açıklamasını buraya girin

Eylem Sayfaları kullanıcıya bir seçenekler listesi verir. Cihazın boyutuna ve yönüne bağlı olarak ekranın altında veya bir popoverda görünürler. Uyarılarda olduğu gibi, a UIAlertControllereylem sayfası oluşturmak için a kullanılır. İOS 8'den önce UIActionSheet, ancak şimdi belgeler diyor:

Önemli: UIActionSheet iOS 8. (Not önerilmiyor UIActionSheetDelegateoluşturmak ve iOS 8'de eylem sayfaları yönetmek ve daha sonra yerine kullanın. Ayrıca kullanımdan kaldırıldı) UIAlertControllerbir ile preferredStyleait UIAlertControllerStyleActionSheet.

Kalıcı Görünüm (bana bir örnek göster)

resim açıklamasını buraya girin

Bir modal görünümü bir görevi tamamlamak için gereken her şeye sahiptir kendine yeten bir görünümüdür. Tam ekranı alabilir veya almayabilir. Kalıcı bir görünüm oluşturmak UIPresentationControlleriçin Kalıcı Sunum Stillerinden biriyle a kullanın .

Ayrıca bakınız

Popover (bana bir örnek göster)

resim açıklamasını buraya girin

Bir Popover bunun kapalı dokunarak zaman bir şey üzerinde bir kullanıcı muslukları görünür ve kaybolur bir görünümüdür. Musluğun yapıldığı yerden kontrol veya konumu gösteren bir oka sahiptir. İçerik, Görünüm Denetleyicisine koyabileceğiniz hemen hemen her şey olabilir. İle bir popover yaparsınız UIPopoverPresentationController. (İOS 8'den önce UIPopoverControllerönerilen yöntemdi.)

Geçmişte popovers sadece iPad'de mevcuttu, ancak iOS 8'den başlayarak onları bir iPhone'a da alabilirsiniz ( buraya , buraya ve buraya bakın ).

Ayrıca bakınız

Bildirimler

resim açıklamasını buraya girin

Bildirimler , uygulama ön planda çalışmadığında bile kullanıcıyı bir şey hakkında bilgilendiren sesler / titreşimler, uyarılar / afişler veya rozetlerdir.

resim açıklamasını buraya girin

Ayrıca bakınız

Android Toasts hakkında bir not

resim açıklamasını buraya girin

Android'de bir Tost , ekranda kısa bir süre için görüntülenen ve daha sonra uygulama ile kullanıcı etkileşimini bozmadan otomatik olarak kaybolan kısa bir mesajdır.

Android arka planından gelen kullanıcılar, Tost'un iOS sürümünün ne olduğunu bilmek ister. Bu soruların bazı örneklerini burada , burada , burada ve burada bulabilir . Cevap, iOS'ta bir Tost'a eşdeğer olmamasıdır . Sunulan çeşitli geçici çözümler şunlardır:

  • Bir alt sınıfla kendiniz yapın UIView
  • Tostu taklit eden bir üçüncü taraf projesini içe aktarın
  • Zamanlayıcılı düğmesiz bir Uyarı kullanın

Bununla birlikte, tavsiyem, iOS ile birlikte gelen standart UI seçeneklerine uymaktır. Uygulamanızı Android sürümüyle aynı şekilde göstermeye ve aynı şekilde davranmaya çalışmayın. Bir iOS uygulaması gibi görünmesi ve hissedilmesi için nasıl yeniden paketleyeceğinizi düşünün.


3
Hala Android Toast hakkında bir not ile! Güzel! Bu bilgiler, Android geliştirmeden gelen yeni geliştiricilere yardımcı olur. Teşekkür ederim!
Filipe Brito

3
Dostum, bunu yazdırmam ve çerçevelemem gerekiyor! Beni dün ve bugün kurtardın: D
finngu

58

İOS 8'in piyasaya sürülmesinden bu yana UIAlertViewartık kullanımdan kaldırıldı; Taraftarlar aynı şekilde yerine giren UIAlertController için de tezahüratını eksik etmedi.

Swift'te nasıl göründüğüne bir örnek:

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
}

Gördüğünüz gibi, API hem eylem için hem de uyarıyı sunarken geri dönüşler uygulamamıza izin veriyor, ki bu oldukça kullanışlı!

Swift 4.2 için güncellendi

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 presentViewController bir kapanış ayracı olmalı ve tamamlama bloğunuz ile tamamlama: nil arasındaki fark nedir?
Andrew Plummer

Fark yok. Çağrılacak bir blok var.
Entalpi

25

İOS 8.0 için güncellendi

İOS 8.0'dan beri UIAlertController'ı aşağıdaki gibi kullanmanız gerekir:

-(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];
}

Benim örneğimde kendini bir pop-up için "presentViewController" yöntemi uygulayan bir UIViewController olduğu.

David


11

Swift 3 ve Swift 4 için:

UIAlertView kullanımdan kaldırıldığı için Swift 3'te Uyarı görüntülemek için iyi bir yol var

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)

Onaylanmadı:

Bu, kontrol edilen yanıttan esinlenen hızlı sürümdür:

Ekran Uyarı Görünümü:

   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()

Temsilciyi görünüm denetleyicinize ekleyin:

class AgendaViewController: UIViewController, UIAlertViewDelegate

Kullanıcı düğmeyi tıkladığında bu kod yürütülür:

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


}

UIAlertView artık kullanımdan kaldırıldı.
Parth Sane

7

Zaten farklı pop-up türlerine genel bir bakış yazmış olmama rağmen , çoğu insanın bir Alert'e ihtiyacı var.

Bir açılır iletişim kutusu nasıl uygulanır?

resim açıklamasını buraya girin

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)
    }
}

Daha tam cevabım burada .


0

İşte Xamarin.iOS'ta C # sürümü

var alert = new UIAlertView("Title - Hey!", "Message - Hello iOS!", null, "Ok");
alert.Show();
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.