2015-09-27 8 views
8

पर दिखाई नहीं दे रहा है, मैं अपने ऐप में UIAlertController जोड़ने की कोशिश कर रहा हूं लेकिन यह बिल्कुल दिखाई नहीं दे रहा है। मैंने निम्नलिखित कोशिश की है:UIAlertController सभी

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Message" message:@"Web Service is not available." preferredStyle:UIAlertControllerStyleAlert]; 

UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]; 
[alertController addAction:ok]; 

[self presentViewController:alertController animated:YES completion:nil]; 

लेकिन यह बिल्कुल दिखाई नहीं दे रहा है, मैं क्या गलत कर रहा हूं?

+0

यह कोड ठीक काम करना चाहिए। क्या आप हमें शेष संदर्भ दिखा सकते हैं जिसमें यह स्निपेट दिखाई देता है? – JaredH

+0

आपके द्वारा पोस्ट किया गया कोड ऐसा लगता है कि इसे काम करना चाहिए। आपकी विधि क्या दिखती है कि आप उस अलर्ट को दिखाने के लिए उपयोग कर रहे हैं? क्या वह विधि बुला रही है? – Adrian

+0

क्या आप मुख्य थ्रेड के इस चेतावनी नियंत्रक को प्रस्तुत करने का प्रयास कर रहे हैं? क्या आप इसे एक व्यू कंट्रोलर से भी पेश कर रहे हैं? क्या आपको कोई त्रुटि मिल रही है? – JAL

उत्तर

19

स्टोरीबोर्ड के प्रारंभिक दृश्य नियंत्रक में, यह viewDidAppear: में होना चाहिए। अन्यथा यदि एक एक्सआईबी में उपयोग किया जाता है, तो यह viewWillAppear और viewDidLoad में एक अलर्ट भी दिखाएगा।

मैं, दोनों आईओएस 8 और 9 में एकल दृश्य आवेदन टेम्पलेट में अपने कोड भाग गया निम्न दृश्य जीवन चक्र कॉलबैक में दिए गए ViewController, में अपने कोड डाल:

  • viewDidAppear - सफल रहा
  • viewWillAppear - कोई चेतावनी नहीं दिखाया गया; परिणामस्वरूप इस आउटपुट को कंसोल में: चेतावनी: उपस्थिति का प्रयास विंडो पदानुक्रम में नहीं है!
  • viewDidLoad - कोई चेतावनी नहीं दिखाया गया; इसके परिणामस्वरूप कंसोल में यह आउटपुट: दृश्य नियंत्रक के दृश्य को लोड करने का प्रयास करते समय इसे अनुमति नहीं दी जाती है और इसके परिणामस्वरूप अपरिभाषित व्यवहार() हो सकता है।
+0

आप कभी भी दृश्य डीललोड में एक चेतावनी नियंत्रक क्यों पेश करना चाहते हैं? क्या होगा यदि आप एक दृश्य लोड कर रहे हैं लेकिन इसे स्पष्ट रूप से प्रस्तुत नहीं करते हैं? – JAL

+0

अपने पहले प्रश्न का उत्तर देने के लिए, जैसे ही दृश्य दिखाई देता है, आप एक चेतावनी दिखाना चाहेंगे। हालांकि, मैं बस उल्लेख कर रहा था कि, अगर मैग्ना का कोड 'viewDidLoad' में था। मैंने आईओएस 9 में एक स्टोरीबोर्ड (सिंगल व्यू एप्लीकेशन टेम्पलेट) के साथ आईओएस 9 में 'व्यूडिडलोड' विधि के अंदर अपना कोड डालने का प्रयास किया, और मुझे एक त्रुटि मिली: इसे देखने के दौरान व्यू कंट्रोलर के दृश्य को लोड करने का प्रयास करने की अनुमति नहीं है और शायद परिणाम अपरिभाषित व्यवहार () में परिणाम। मैं कुछ स्पष्टीकरण के साथ अपना जवाब विस्तारित करूंगा। – Sheamus

+0

viewDidLoad को दिखाई देने के तुरंत बाद नहीं कहा जाता है। वह देखें WillillAppear। और हां, यह लोड होने के दौरान एक दृश्य नियंत्रक को देखने पर समझ में नहीं आता है। – JAL

0
- (void)showMessage:(BOOL)animated { 

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Do not leave any Field Empty" message:nil preferredStyle:UIAlertControllerStyleAlert]; 

[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
}]]; 
[self present:alertController animated:YES completion:nil]; 

}

जहां मैं इस विधि

 [self showMessage:YES]; 

यह कुछ एक लाभ मिल सकता है ठीक काम करता है कहते हैं।

संबंधित मुद्दे