2010-03-22 9 views
12

UIAlertViewDelegate प्रोटोकॉल दो विधियों, alertView:clickedButtonAtIndex: और alertView:didDismissWithButtonIndex: को परिभाषित करता है, जो मुझे उपयोगीता में समान प्रतीत होता है।UIAlertViewDelegate क्लिक किया गया बटनऑट इंडेक्स: उपयोगिता?

clickedButtonAtIndex और didDismissButtonWithIndex क्यों है जब वे दोनों एक ही काम करते हैं? मुझे एहसास है कि willDismissButtonWithIndex भी है जो चेतावनी दृश्य को खारिज करने से पहले होता है, लेकिन के बजाय clickedButtonAtIndex का उपयोग करने का कोई कारण है?

उत्तर

19

मैं एक और अधिक उपयोगी दोनों के बीच अंतर पाया:

जब एक UIAlertView दिखा रहा है, और उपकरण के निष्क्रिय होने, alertView:didDismissWithButtonAtIndex: कहा जाता हो जाता है, भले ही चेतावनी दृश्य वास्तव में खारिज नहीं कर रहा है। एक बार डिवाइस उठने के बाद यह फिर से दिखाया जाता है। alertView:clickedButtonAtIndex: केवल तभी कॉल किया जाता है जब उपयोगकर्ता बटनों में से किसी एक पर क्लिक करता है।

12

alertView:clickedButtonAtIndex: को तब कहा जाता है जब उपयोगकर्ता एक चेतावनी दृश्य पर एक बटन क्लिक करता है जबकि alertView:didDismissWithButtonIndex: को स्क्रीन से अलर्ट व्यू को खारिज करने के बाद बुलाया जाता है। (UIAlertViewDelegate Protocol Reference देखें।)

अंतर न्यूनतम है लेकिन यह आपको एनीमेशन से पहले या बाद में कुछ करने की अनुमति देता है।

+2

WillDismissWithButtonIndex विधि क्लिक करने के लिए पूरी तरह से समान दिखता है बटनऑट इंडेक्स: फिर ... – Vladimir

+1

हां, लेकिन थोड़ा अंतर है। जब कोई उपयोगकर्ता बटन दबाता है तो कॉल किया जाता है (इसलिए अलर्ट हमेशा दिखाई देता है) और दूसरा कॉल तब होता है जब अलर्ट गायब हो जाता है। तो, उदाहरण के लिए, यदि आप 2 विचारों के बीच एक संक्रमण करना चाहते हैं तो यह चेतावनी बंद हो जाती है जब अलर्ट "चेतावनी दृश्य: didDismissWithButtonIndex:" में बंद हो जाता है। –

+1

लेकिन क्या WillDismissWithButtonIndex (didDismiss नहीं) पर क्लिक किए गए बटन पर क्लिक करने का कोई कारण है या इसके विपरीत? –

1

यदि अलर्ट व्यू किसी भी कारण से गायब हो जाता है (जिसमें अन्य यूआईएलर्टव्यू द्वारा कवर किया जा रहा है, सोना आदि), didDismissWithButtonAtIndex: कहा जाता है। इसका मतलब यह हो सकता है कि उपयोगकर्ता को कुछ भी क्लिक करने के बावजूद भी विधि कहा जा सकता है। यदि आप वास्तव में बटन पर क्लिक करने वाले उपयोगकर्ता के जवाब में कॉल करने के लिए इस प्रतिनिधि कॉलबैक पर निर्भर करते हैं तो इससे अप्रत्याशित व्यवहार हो सकता है। इस मामले में clickedButtonAtIndex: अधिक उपयोगी है।

1

मैं iOS पर चेतावनी दृश्य वर्तमान के साथ अपने डिवाइस को लॉक करके एड के व्यवहार को पुनः नहीं कर सकता है 7.

हालांकि, alertView:clickedButtonAtIndex:, alertView:didDismissWithButtonIndex: और alertView:willDismissWithButtonIndex: के बीच सबसे महत्वपूर्ण अंतर यह है कि पहली विधि (clickedButtonAtIndex:) ही है कहा जाता है कि उपयोगकर्ता आपके अलर्ट व्यू पर एक बटन पर स्पष्ट रूप से टैप करता है (इसलिए 'क्लिक किया गया')।

क्या यह संभव है कि एक बटन पर क्लिक किए बिना एक अलर्ट व्यू खारिज कर दिया जाए? हां, आप प्रोग्राम को UIAlertView विधि dismissWithClickedButtonIndex:animated: का उपयोग करके एक चेतावनी दृश्य छुपा सकते हैं।

इसलिए, यदि आप कुछ व्यवहार की जरूरत हमेशा सतर्क की बर्खास्तगी पर शुरू किया जा करने के लिए दृश्य-चाहे वह उपयोगकर्ता एक बटन पर टैप करके चालू होने या चालू होने वाले प्रोग्राम के रूप में-तब का उपयोग कर didDismissWithButtonIndex: और willDismissWithButtonIndex: अधिक समझ में आता है किया गया था।

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