2013-01-23 15 views
5

मुझे viewWillAppear और viewDidLoad में से किसी एक को रखने के लिए उपयोग किया जाता है, यह तब तक ठीक है जब तक यह पता न हो। हालांकि मैं सोच रहा हूं कि कुछ नियम होना चाहिए जो viewWillAppear में कब डालें और viewDidLoad में कब डालें?कब देखने के लिए WillAppear और कब देखने के लिए DidLoad?

+0

Google ने कोशिश की ....? –

उत्तर

11

सरल नियम मैं इसका उपयोग करता हूं। viewDidLoad तब होता है जब दृश्य के संसाधन लोड होते हैं। दृश्य अभी तक स्क्रीन पर नहीं खींचा गया है। इसलिए ज्यामिति और दृश्य के दृश्यों से निपटने वाली गणना और कोड यहां नहीं रखा जाना चाहिए। वे viewWillAppear या viewDidAppear विधि में होना चाहिए।

इसके अलावा viewWillAppear कहा जा सकता है कई बार

  1. एक पॉपओवर/मोडल दृश्य दिखाया गया है और हटाने
  2. एक चेतावनी देखें/actionsheet/uiactivityController के दृश्य प्रदर्शित किया और निकाल दिया जाता है जब किया जाता है।

इन कारणों से, viewWillAppear में ऐसे कोड शामिल नहीं होने चाहिए जो समाप्त होने में अधिक समय लगे। (कम से कम कोड मुख्य धागे पर चल रहा है)। न तो कोड होना चाहिए जो प्रति दृश्य प्रदर्शन के बाद केवल चलाने की आवश्यकता है।

मुझे और भी यकीन है कि ये याद रखना आसान है और मुझे उम्मीद है कि इससे मदद मिलती है।

4

viewDidLoad: लोड हो रहा हैआपको सूचित करता है कि एक दृश्य के समाप्त हो गया है

viewWillAppear:रन सिर्फ दृश्य लोड

viewDidLoad से पहले चीजें आप एक बार क्या करना है है। viewWillAppear हर बार दृश्य दिखाई देने पर बुलाया जाता है। आपको उन चीजों को करना चाहिए जो आपको केवल viewDidLoad में करना है - जैसे कि UILabel ग्रंथों को सेट करना। हालांकि, जब भी उपयोगकर्ता इसे देखने के लिए हर बार दृश्य के एक विशिष्ट भाग को संशोधित करना चाह सकता है, उदा।आईपॉड एप्लिकेशन प्रत्येक बार जब आप "अब बजाना" दृश्य पर जाते हैं तो गीत को शीर्ष पर वापस स्क्रॉल करता है।

हालांकि, जब आप किसी सर्वर से चीजें लोड कर रहे हैं, तो आपको भी विलंबता के बारे में सोचना होगा। यदि आप अपने सभी नेटवर्क संचार को डीडलोड या व्यूविल्लएपियर में पैक करते हैं, तो उपयोगकर्ता को देखने को देखने से पहले उन्हें निष्पादित किया जाएगा - संभवतः आपके ऐप का एक छोटा फ्रीज होता है। यह सबसे अच्छा विचार हो सकता है कि उपयोगकर्ता को किसी प्रकार के गतिविधि संकेतक के साथ एक अप्रचलित दृश्य दिखाएं। जब आप अपने नेटवर्किंग के साथ काम करते हैं, जिसमें दूसरा या दो (या यहां तक ​​कि असफल भी हो सकता है - कौन जानता है?), तो आप अपने डेटा के साथ दृश्य को पॉप्युलेट कर सकते हैं। यह कैसे किया जा सकता है पर अच्छे उदाहरण विभिन्न ट्विटर ग्राहकों में देखा जा सकता है। उदाहरण के लिए, जब आप Twitterrific में लेखक विवरण पृष्ठ देखते हैं, तो दृश्य केवल नेटवर्क लोड होने तक "लोड हो रहा है ..." कहता है।

+0

अच्छी व्याख्या, बस मैंने इसे पहले यहां पढ़ा है: http://stackoverflow.com/questions/1579550/uiviewcontroller-viewdidload-vs-viewwillappear-what-is-the-proper-division-of –