एक साधारण UIAlertView जोड़ना


108

कुछ स्टार्टर कोड क्या है जिसका उपयोग मैं उस पर एक "ओके" बटन के साथ एक सरल यूआईएलर्ट व्यू बनाने के लिए कर सकता हूं?


क्या आप ओके बटन पर क्लिक करने तक एक्शन करने के लिए इंतजार करना चाहते हैं?
सुडो rm -rf

1
@sudo rm -rf: नहीं, मुझे सिर्फ यह कहने की जरूरत है कि "डी दे दो डू" या कुछ और। कोई कार्रवाई की जरूरत है।
17

जवाबों:


230

जब आप अलर्ट दिखाना चाहते हैं, तो यह करें:

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"ROFL" 
                                                    message:@"Dee dee doo doo." 
                                                    delegate:self 
                                                    cancelButtonTitle:@"OK" 
                                                    otherButtonTitles:nil];
[alert show];

    // If you're not using ARC, you will need to release the alert view.
    // [alert release];

यदि आप बटन क्लिक करने पर कुछ करना चाहते हैं, तो इस प्रतिनिधि विधि को लागू करें:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
    // the user clicked OK
    if (buttonIndex == 0) {
        // do something here...
    }
}

और सुनिश्चित करें कि आपका प्रतिनिधि UIAlertViewDelegateप्रोटोकॉल के अनुरूप है :

@interface YourViewController : UIViewController <UIAlertViewDelegate> 

4
यदि आप प्रतिनिधि को कॉल करने के लिए 1 से अधिक सतर्क विचार रखते हैं, तो आप टैग का उपयोग कर सकते हैं।
पन्नार एसबीआई

71

अन्य उत्तर पहले से ही iOS 7 और पुराने के लिए जानकारी प्रदान करते हैं, हालांकि UIAlertViewiOS 8 में पदावनत किया गया है

IOS 8+ में आपको उपयोग करना चाहिए UIAlertController। यह दोनों के लिए एक प्रतिस्थापन है UIAlertViewऔर UIActionSheet। प्रलेखन: UIAlertController वर्ग संदर्भ । और NSHipster पर एक अच्छा लेख ।

एक सरल चेतावनी दृश्य बनाने के लिए आप निम्नलिखित कार्य कर सकते हैं:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Title"
                                                                         message:@"Message"
                                                                  preferredStyle:UIAlertControllerStyleAlert];
//We add buttons to the alert controller by creating UIAlertActions:
UIAlertAction *actionOk = [UIAlertAction actionWithTitle:@"Ok"
                                                   style:UIAlertActionStyleDefault
                                                 handler:nil]; //You can use a block here to handle a press on this button
[alertController addAction:actionOk];
[self presentViewController:alertController animated:YES completion:nil];

स्विफ्ट 3/4/5:

let alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: .alert)
//We add buttons to the alert controller by creating UIAlertActions:
let actionOk = UIAlertAction(title: "OK",
    style: .default,
    handler: nil) //You can use a block here to handle a press on this button

alertController.addAction(actionOk)

self.present(alertController, animated: true, completion: nil)

ध्यान दें, कि, चूंकि यह iOS 8 में जोड़ा गया था, इसलिए यह कोड iOS 7 और पुराने पर काम नहीं करेगा। तो, दुख की बात है कि अब हमें इसके लिए संस्करण जांच का उपयोग करना होगा:

NSString *alertTitle = @"Title";
NSString *alertMessage = @"Message";
NSString *alertOkButtonText = @"Ok";

if (@available(iOS 8, *)) {
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:alertTitle
                                                        message:alertMessage
                                                       delegate:nil
                                              cancelButtonTitle:nil
                                              otherButtonTitles:alertOkButtonText, nil];
    [alertView show];
}
else {
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:alertTitle
                                                                             message:alertMessage
                                                                      preferredStyle:UIAlertControllerStyleAlert];
    //We add buttons to the alert controller by creating UIAlertActions:
    UIAlertAction *actionOk = [UIAlertAction actionWithTitle:alertOkButtonText
                                                       style:UIAlertActionStyleDefault
                                                     handler:nil]; //You can use a block here to handle a press on this button
    [alertController addAction:actionOk];
    [self presentViewController:alertController animated:YES completion:nil];
}

स्विफ्ट 3/4/5:

let alertTitle = "Title"
let alertMessage = "Message"
let alertOkButtonText = "Ok"

if #available(iOS 8, *) {
    let alertController = UIAlertController(title: alertTitle, message: alertMessage, preferredStyle: .alert)
    //We add buttons to the alert controller by creating UIAlertActions:
    let actionOk = UIAlertAction(title: alertOkButtonText,
        style: .default,
        handler: nil) //You can use a block here to handle a press on this button

    alertController.addAction(actionOk)
    self.present(alertController, animated: true, completion: nil)
}
else {
    let alertView = UIAlertView(title: alertTitle, message: alertMessage, delegate: nil, cancelButtonTitle: nil, otherButtonTitles: alertOkButtonText)
    alertView.show()
}

UPD: स्विफ्ट के लिए अपडेट किया गया 5. ओबज-सी में उपलब्धता की जांच के साथ पुरानी श्रेणी की उपस्थिति की जांच की गई।


1
आपको वह कोड पोस्ट नहीं करना चाहिए जो काम कर सकता है लेकिन नहीं। MyOwnUtilsClass का उपयोग करने के बजाय, बस उस कोड को लिखें जो आईओएस संस्करण की जांच करता है।
csharpwinphonexaml

1
@csharpwinphonexaml, मैं सहमत नहीं हूँ। यह कोड की एक अनावश्यक जटिलता होगी। वर्तमान संस्करण UIAlerView / UIAlertController उपयोग दिखाता है, जबकि सिस्टम संस्करण की जांच इस प्रश्न का विषय नहीं है। स्विफ्ट में ओएस संस्करण की जांच करने की एक पंक्ति विधि में बनाया गया है, इसलिए मैंने इसका उपयोग किया। ऑब्जेक्टिव-सी में कई विधियां हैं, लेकिन उनमें से कोई भी सुरुचिपूर्ण नहीं है।
FreeNickname

1
मैंने इसे इसलिए कहा क्योंकि मैं नहीं जानता कि हर कोई कोड के हर टुकड़े को समझने में माहिर है और यह जानना चाहता है कि इसे एक कामकाजी के साथ कैसे बदला जाए।
csharpwinphonexaml

10

UIAlertView को iOS 8 पर अपग्रेड किया गया है। इसलिए, iOS 8 और इसके बाद के संस्करण पर अलर्ट बनाने के लिए, UIAlertController का उपयोग करने की अनुशंसा की जाती है:

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Title" message:@"Alert Message" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action){

    // Enter code here
}];
[alert addAction:defaultAction];

// Present action where needed
[self presentViewController:alert animated:YES completion:nil];

इस तरह से मैंने इसे लागू किया है।




9

दो पिछले उत्तरों (उपयोगकर्ता "sudo rm -rf" और "इवान मुलावस्की" के पूरक के रूप में), यदि आप कुछ भी नहीं करना चाहते हैं जब आपका अलर्ट दृश्य क्लिक किया जाता है, तो आप इसे केवल आवंटित, दिखा सकते हैं और जारी कर सकते हैं। आपको प्रतिनिधि प्रोटोकॉल घोषित करने की आवश्यकता नहीं है।


3

यहाँ एक पूरी विधि है जिसमें केवल एक बटन है, एक 'ठीक', UIAlert को बंद करने के लिए:

- (void) myAlert: (NSString*)errorMessage
{
    UIAlertView *myAlert = [[UIAlertView alloc]
                          initWithTitle:errorMessage
                          message:@""
                          delegate:self
                          cancelButtonTitle:nil
                          otherButtonTitles:@"ok", nil];
    myAlert.cancelButtonIndex = -1;
    [myAlert setTag:1000];
    [myAlert show];
}


0

सरणी डेटा के साथ सरल चेतावनी:

NSString *name = [[YourArray objectAtIndex:indexPath.row ]valueForKey:@"Name"];

NSString *msg = [[YourArray objectAtIndex:indexPath.row ]valueForKey:@"message"];

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:name
                                                message:msg
                                               delegate:self
                                      cancelButtonTitle:@"OK"
                                      otherButtonTitles:nil];
[alert show];

-1

स्विफ्ट 3 के लिए:

let alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
self.present(alert, animated: true, completion: nil)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.