Swift में UIAlertView: 5 घातक गलतियाँ और उनसे कैसे बचें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: आपका UIAlertView क्यों काम नहीं कर रहा (और इसमें Stack Overflow का क्या रोल है)

\n\n

अगर आपने कभी गूगल पर सर्च किया है "How would I create a UIAlertView in Swift?" — तो आप अकेले नहीं हैं। Stack Overflow पर इस सवाल को लाखों बार देखा जा चुका है। लगता है कि इससे आसान क्या हो सकता है? यूज़र को एक पॉप-अप दिखाना जिसमें "OK" बटन हो। लेकिन असल में, शुरुआती (और अनुभवी) डेवलपर्स भी अक्सर एक ही गलतियाँ दोहराते हैं।

\n\n

इस आर्टिकल में हम Swift में UIAlertView बनाते समय टॉप-5 गलतियाँ और उन्हें ठीक करने का तरीका बताएँगे। साथ ही, UIAlertController के लिए तैयार कोड देंगे — जो पुराने API का आधुनिक विकल्प है। अगर आप बिना क्रैश के क्लीन और काम करने वाला कोड लिखना चाहते हैं, तो हमारे साथ बने रहें।

\n\n

गलती #1: UIAlertView का इस्तेमाल करना (UIAlertController के बजाय)

\n\n

सबसे आम गलती है आधुनिक Swift में UIAlertView को कॉल करना। यह क्लास iOS 8 से ही deprecated (पुराना) घोषित कर दी गई थी। अगर आप यह लिखते हैं:

\n\n
let alert = UIAlertView(title: "त्रुटि", message: "कुछ गलत हो गया", delegate: nil, cancelButtonTitle: "OK")\nalert.show()
\n\n

…तो कंपाइलर शायद चेतावनी या एरर देगा। और अगर प्रोजेक्ट बिल्ड हो भी गया — तो iOS 13+ पर अलर्ट सही से काम नहीं करेगा।

\n\n

ऐसा क्यों होता है?

\n

Apple ने UIAlertView को iOS 8 में ही UIAlertController से बदल दिया था। पुराना क्लास अब सपोर्टेड नहीं है, और इसके इस्तेमाल से अनपेक्षित व्यवहार हो सकता है।

\n\n

इसे कैसे ठीक करें?

\n

UIAlertController का इस्तेमाल करें जिसमें .alert या .actionSheet स्टाइल हो। सही कोड यह है:

\n\n
let alert = UIAlertController(title: "त्रुटि",\n                              message: "कुछ गलत हो गया",\n                              preferredStyle: .alert)\nalert.addAction(UIAlertAction(title: "OK", style: .default))\npresent(alert, animated: true)
\n\n

याद रखें: आधुनिक Swift में UIAlertView पुराना (legacy) है। हमेशा UIAlertController का उपयोग करें।

\n\n

गलती #2: present() को कॉल करना भूल जाना

\n\n

भले ही आपने UIAlertController बना लिया हो, लेकिन अगर उसे दिखाना भूल गए — तो कुछ नहीं होगा। सचमुच। कोड तो चलेगा, अलर्ट मेमोरी में बन जाएगा, लेकिन यूज़र उसे देख नहीं पाएगा।

\n\n

गलती का सामान्य उदाहरण:

\n\n
func showAlert() {\n    let alert = UIAlertController(title: "नमस्ते", message: "दुनिया", preferredStyle: .alert)\n    alert.addAction(UIAlertAction(title: "OK", style: .default))\n    // present() कॉल करना भूल गए!\n}
\n\n

नतीजा: कुछ नहीं। न कोई एरर, न कोई अलर्ट। आप सोचते रह जाएँगे कि कोड क्यों काम नहीं कर रहा।

\n\n

इसे कैसे ठीक करें?

\n

हमेशा मौजूदा view controller पर present(_:animated:completion:) कॉल करें:

\n\n
func showAlert() {\n    let alert = UIAlertController(title: "नमस्ते", message: "दुनिया", preferredStyle: .alert)\n    alert.addAction(UIAlertAction(title: "OK", style: .default))\n    present(alert, animated: true, completion: nil)\n}
\n\n

सुझाव: अगर आप क्लोजर या async कोड से अलर्ट कॉल कर रहे हैं, तो सुनिश्चित करें कि self (view controller) अभी भी मौजूद है। वरना क्रैश हो सकता है।

\n\n

गलती #3: बटन दबाने की गलत हैंडलिंग

\n\n

पुराने UIAlertView में हम डेलिगेट alertView(_:clickedButtonAt:) का इस्तेमाल करते थे। UIAlertController में यह अलग है — यहाँ क्लोजर (closures) का उपयोग होता है।

\n\n

शुरुआती लोग अक्सर क्लास को UIAlertViewDelegate पर सब्सक्राइब करने और डेलिगेट मेथड्स को लागू करने की कोशिश करते हैं, लेकिन यह UIAlertController के साथ काम नहीं करेगा।

\n\n

गलत तरीका:

\n\n
class ViewController: UIViewController, UIAlertViewDelegate {\n    func showAlert() {\n        let alert = UIAlertController(title: "सवाल", message: "क्या आप सहमत हैं?", preferredStyle: .alert)\n        alert.addAction(UIAlertAction(titl                

ब्लॉग

पुस्तक अनुशंसाएँ