2014-11-05 10 views
6

से एनिमेटेड मैं तेजी से नया हूं लेकिन मुझे लगता है कि मुझे इसका लटका मिल रहा है। हालांकि मेरी प्रगति बहुत मुश्किल हो गई।self.navigationController? .popViewController UIAlertController

मैं क्या करना चाहता हूं कि उपयोगकर्ता को एक त्रुटि संदेश फेंकना है जब हम उसकी क्वेरी में प्रासंगिक डेटा नहीं पा रहे हैं, और उसके बाद उसे पिछले व्यू कंट्रोलर पर वापस ले जाएं।

हालांकि, मुझे यह करने में वास्तविक समस्या है। जिस लाइन पर मैं कार्रवाई जोड़ता हूं, मुझे निम्न त्रुटि मिलती है: 'UIViewController?' शून्य

let alertController = UIAlertController(title: "Oops", message: "We couldn't find any data for this title, sorry!", preferredStyle: UIAlertControllerStyle.Alert) 

alertController.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { action in 
    self.navigationController?.popViewControllerAnimated(true) 
})) 

मैं यह कैसे कर सकता हूं? क्या मुझसे साफ़ - साफ़ कुछ चीज़ चूक रही है? मैंने बहिष्कृत UIAlertView के साथ गड़बड़ करने की कोशिश की लेकिन कोई भी बुद्धिमान बन गया।

उत्तर

23

बस बंद होने से शरीर में एक स्पष्ट return बयान जोड़ें:

alertController.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { action in 
    self.navigationController?.popViewControllerAnimated(true) 
    return 
})) 

कारण है कि ऐसा होता है कि एक ही बयान बंद वापसी मान के रूप में नियंत्रित किया जाता है है, इसलिए संकलक popViewControllerAnimated के रिटर्न मान उपयोग करता है, जो आश्चर्यजनक रूप से UIViewController? है। स्पष्ट वापसी कथन उस से बचाता है।

यह व्यवहार Implicit Returns from Single-Expression Closures

+0

त्वरित उत्तर के लिए धन्यवाद में प्रलेखित है! मैं न्यूनतम समय के कारण भी आपके उत्तर को सही के रूप में चिह्नित नहीं कर सकता। –

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