IOS UIViewController के जीवनचक्र को समझने के लिए खोज


299

क्या आप मुझे UIViewControllerजीवनचक्र के प्रबंधन का सही तरीका बता सकते हैं ?

विशेष रूप से, मैं कैसे उपयोग करने के लिए जानना चाहते हैं Initialize, ViewDidLoad, ViewWillAppear, ViewDidAppear, ViewWillDisappear, ViewDidDisappear, ViewDidUnloadऔर Disposeएक के लिए मोनो टच में तरीकों UIViewControllerवर्ग।


OSX ViewController और WindowController के लिए कुछ जानकारी या लिंक है? कृपया इसे शेयर करें।
अनूप वैद्य १ '

जवाबों:


410

जब आप दृश्य नियंत्रक को लोड / प्रेजेंट / हाइड / लोड करते हैं तो ये सभी कमांड iOS द्वारा उचित समय पर स्वचालित रूप से कहलाते हैं। यह ध्यान रखना महत्वपूर्ण है कि ये विधियाँ स्वयं से जुड़ी UIViewControllerनहीं UIViewहैं। आपको इनमें से कोई भी सुविधा नहीं मिलेगी बस एक का उपयोग करके UIView

यहाँ Apple की साइट पर महान प्रलेखन है । बस में डाल हालांकि:

  • ViewDidLoad- जब आप क्लास बनाएं और xib से लोड करें। शुरुआती सेटअप और वन-टाइम-ओनली काम के लिए बढ़िया।

  • ViewWillAppear- आपके दृश्य के प्रकट होने, छिपने / फ़ील्ड दिखाने या किसी भी ऑपरेशन के लिए अच्छा है जिसे आप दृश्य दिखाई देने से पहले हर बार चाहते हैं। क्योंकि आप विचारों के बीच आगे-पीछे हो सकते हैं, इसलिए हर बार यह कहा जाएगा कि आपका दृश्य स्क्रीन पर दिखाई देने वाला है।

  • ViewDidAppear - दृश्य दिखाई देने के बाद कॉल किया जाता है - एक एनिमेशन शुरू करने या एक एपीआई से बाहरी डेटा को लोड करने के लिए बढ़िया जगह।

  • ViewWillDisappear/ DidDisappear- समान विचार ViewWillAppear/ ViewDidAppear

  • ViewDidUnload/ ViewDidDispose- ऑब्जेक्टिव-सी में, यह वह जगह है जहाँ आप अपना साफ-सफाई और सामान जारी करते हैं, लेकिन यह स्वचालित रूप से संभाला जाता है इसलिए आपको वास्तव में यहाँ करने की आवश्यकता नहीं है।


86
यह पाठ थोड़ा भ्रामक है, क्योंकि ViewDidLoad का उपयोग केवल एक बार के काम के लिए नहीं किया जाना चाहिए। इसे कई बार कहा जा सकता है यदि दृश्य कम मेमोरी के कारण अनलोड किया जाता है और फिर से लोड किया जाता है।
रिकी हेल्गेसन

4
जब आप व्यू कंट्रोलर बनाते / आरंभ करते हैं तो ViewDidLoad को वास्तव में नहीं कहा जाता है। यह पहली बार है जब आप दृश्य नियंत्रक के दृश्य से संबंधित कुछ भी करते हैं। जैसे इसे एक सबव्यू के रूप में जोड़ें, फ्रेम सेट करें, आदि। इसे निब से लोड करते समय कोर्स भी कहा जाता है।
जेसन ग्रैंडेल्ली

3
ViewDidAppear - दृश्य दिखाई देने के बाद कॉल किया जाता है - एक एनिमेशन शुरू करने या एक एपीआई से बाहरी डेटा को लोड करने के लिए बढ़िया जगह। डेटा लोड करना शुरू करने के लिए यह एक अच्छी जगह क्यों है? क्यों नहीं देखा?
एंटन चिकिन

1
लोड-व्यू पद्धति के बारे में क्या है, अगर इसे पहली बार कहा जाता है जब दृश्य से पहले मेमोरी में लोड किया गया एक nib होता है या नहीं।
Hहुलक

@chakrit यह एक अच्छा बिंदु है - viewDidAppear डेटा को रीफ्रेश करने के लिए एक शानदार जगह है (यदि आपको आवश्यकता है)। मैं केवीओ के बारे में असहमत हूं, क्योंकि यह उन विचारों पर अवांछनीय ताज़ा कर सकता है जो वास्तव में किसी उपयोगकर्ता द्वारा कभी नहीं देखे जाते हैं।
एंटोन चिकिन डे

409

अद्यतन: ViewDidUnload को iOS 6 में पदावनत किया गया था, इसलिए तदनुसार जवाब अपडेट किया गया।

UIViewController जीवनचक्र को यहां आरेखित किया गया है:

एक दृश्य नियंत्रक का जीवनचक्र, आरेखित

ज़ामरीन नेटिव / मोनो टच का उपयोग करने का लाभ यह है कि यह देशी एपीआई का उपयोग करता है, और इसलिए यह एप्पल के डॉक्यूमेंटेशन में देखने के समान ही ViewController जीवनचक्र का अनुसरण करता है।


17
इस फ्लोचार्ट पर व्यूविल्लायआउट साक्षात्कार और दृश्यडायलैटआउट साक्षात्कार कहां जाते हैं?
Max_Power89

7
यह आरेख गलत है।
ViewDidUnload को

2
यह वास्तव में केवल गलत है । एसओ पर एक गलत जवाब का एक और उदाहरण, जैसे-जैसे साल बीतते हैं। कम्प्यूटिंग अत्यधिक गैर-स्थिर है।
फेटी

186

यह नवीनतम iOS संस्करणों ( Xcode 9.3, स्विफ्ट 4.1 के साथ संशोधित ) के लिए है। नीचे सभी चरण हैं जो UIViewControllerपूर्ण रूप से जीवनचक्र बनाते हैं ।

  • loadView()

  • loadViewIfNeeded()

  • viewDidLoad()

  • viewWillAppear(_ animated: Bool)

  • viewWillLayoutSubviews()

  • viewDidLayoutSubviews()

  • viewDidAppear(_ animated: Bool)

  • viewWillDisappear(_ animated: Bool)

  • viewDidDisappear(_ animated: Bool)

मुझे उन सभी चरणों की व्याख्या करें।

1। loadView

यह ईवेंट उस दृश्य को बनाता / लोड करता है जो नियंत्रक प्रबंधित करता है। यह एक संबंधित नीब फ़ाइल या रिक्त से लोड कर सकता है UIViewयदि रिक्त पाया गया था। यह प्रोग्राम में अपने विचारों को प्रोग्रामेटिक रूप से बनाने के लिए एक अच्छी जगह बनाता है।

यह वह जगह है जहाँ उपवर्गों को अपने कस्टम दृश्य पदानुक्रम का निर्माण करना चाहिए यदि वे एक निब का उपयोग नहीं कर रहे हैं। कभी भी सीधे नहीं बुलाया जाना चाहिए। केवल इस विधि को ओवरराइड करें जब आप प्रोग्राम बनाते हैं और viewसंपत्ति को रूट दृश्य असाइन करते हैं तो लोड को ओवरराइड करने पर सुपर विधि को कॉल न करें।

2। loadViewIfNeeded

यदि वर्तमान viewControllerका दृश्य अभी तक सेट नहीं किया गया है, तो यह विधि दृश्य को लोड करेगी लेकिन याद रखें, यह केवल iOS> = 9.0 में उपलब्ध है। इसलिए यदि आप iOS <9.0 का समर्थन कर रहे हैं, तो चित्र में आने की उम्मीद न करें।

यदि यह पहले से सेट नहीं किया गया है, तो दृश्य नियंत्रक के दृश्य को लोड करता है।

3। viewDidLoad

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

दृश्य लोड होने के बाद कॉल किया गया। कोड में बनाए गए कंट्रोलर के लिए, यह बाद-लोड व्यू है। किसी नियब से अनियंत्रित व्यू कंट्रोलर के लिए, यह दृश्य सेट होने के बाद है।

4। viewWillAppear

viewControllerजब भी स्क्रीन पर दृश्य दिखाई देता है, यह घटना सूचित करती है । इस चरण में दृश्य में सीमाएँ हैं जो परिभाषित की गई हैं, लेकिन अभिविन्यास सेट नहीं है।

जब दृश्य दिखाई देने वाला हो तो कॉल किया जाता है। डिफ़ॉल्ट कुछ नहीं करता है।

5। viewWillLayoutSubviews

यह जीवनचक्र का पहला चरण है जहां सीमाओं को अंतिम रूप दिया जाता है। यदि आप बाधाओं या ऑटो लेआउट का उपयोग नहीं कर रहे हैं, तो आप शायद यहां उप-अपडेट अपडेट करना चाहते हैं। यह केवल iOS> = 5.0 में उपलब्ध है। इसलिए यदि आप iOS <5.0 का समर्थन कर रहे हैं, तो उम्मीद न करें कि यह तस्वीर में आ जाएगा।

कंट्रोलर के व्यूज़ लेआउट से पहले ही कॉल किया जाता है। साक्षात्कार विधि लागू की जाती है। उपवर्ग आवश्यक के रूप में लागू कर सकते हैं। डिफ़ॉल्ट एक एनओपी है।

6। viewDidLayoutSubviews

यह घटना दृश्य नियंत्रक को सूचित करती है कि साक्षात्कार सेट हो चुके हैं। यह सेट होने के बाद साक्षात्कार में कोई बदलाव करने के लिए एक अच्छी जगह है। यह केवल iOS> = 5.0 में उपलब्ध है। इसलिए यदि आप iOS <5.0 का समर्थन कर रहे हैं, तो उम्मीद न करें कि यह तस्वीर में आ जाएगा।

कंट्रोलर के व्यूज़ लेआउट के बाद ही कॉल किया जाता है। साक्षात्कार विधि लागू की जाती है। उपवर्ग आवश्यक के रूप में लागू कर सकते हैं। डिफ़ॉल्ट एक एनओपी है।

7। viewDidAppear

viewDidAppearदृश्य के बाद घटना की आग स्क्रीन पर प्रस्तुत किया है। जो बैकएंड सेवा या डेटाबेस से डेटा प्राप्त करने के लिए एक अच्छी जगह बनाता है।

जब दृश्य को स्क्रीन पर पूरी तरह से परिवर्तित किया गया हो तो कॉल किया जाता है। डिफ़ॉल्ट कुछ भी नहीं करता है

8। viewWillDisappear

viewWillDisappearघटना आग प्रस्तुत की दृष्टि जब viewControllerके बारे में, गायब हो जाते हैं खारिज, कवर या छिपाने के दूसरे के पीछे करने के लिए है viewController। यह एक अच्छी जगह है जहां आप अपने नेटवर्क कॉल को प्रतिबंधित कर सकते हैं, टाइमर को अमान्य कर सकते हैं या उन वस्तुओं को छोड़ सकते हैं जो उस से संबंधित हैं viewController

जब दृश्य खारिज, कवर या अन्यथा छिपा हुआ हो तो कॉल किया जाता है।

9। viewDidDisappear

यह जीवनचक्र का अंतिम चरण है जिसे कोई भी प्रस्तुत कर सकता है क्योंकि प्रस्तुत किए जाने viewController, हटाए जाने, ढंकने या छुप जाने के बाद इस घटना की आग भड़क सकती है।

दृश्य खारिज, कवर या अन्यथा छिपे होने के बाद कॉल किया गया। डिफ़ॉल्ट कुछ नहीं करता है

अब Apple के अनुसार जब आप इस तरीके को लागू कर रहे हैं तो आपको superउस विशिष्ट विधि के कार्यान्वयन को याद करना चाहिए ।

यदि आप UIViewController को उप-वर्ग करते हैं, तो आपको इस विधि के सुपर कार्यान्वयन को कॉल करना होगा, भले ही आप NIB का उपयोग न कर रहे हों। (एक सुविधा के रूप में, डिफ़ॉल्ट इनिट विधि आपके लिए यह करेगी, और इस दोनों तरीकों के तर्कों के लिए nil निर्दिष्ट करेगी।) निर्दिष्ट NIB में, फ़ाइल के स्वामी प्रॉक्सी को अपने क्लास कंट्रोलर को अपने व्यू कंट्रोलर उपवर्ग में, व्यू आउटलेट के साथ सेट करना चाहिए। मुख्य दृश्य से जुड़ा है। यदि आप इस विधि को शून्य नाम के साथ लागू करते हैं, तो यह वर्ग ' -loadViewविधि एक NIB को लोड करने का प्रयास करेगी जिसका नाम आपके दृश्य नियंत्रक की कक्षा के समान है। यदि वास्तव में ऐसा कोई एनआईबी मौजूद नहीं है, तो आपको आह्वान करने -setView:से पहले या तो कॉल करना होगा -view, या -loadViewअपने विचारों को प्रोग्रामेटिक रूप से सेट करने की विधि को ओवरराइड करना चाहिए ।

आशा है कि इससे मदद मिली। धन्यवाद।

अद्यतन - जैसा कि @ThomasW ने टिप्पणी के अंदर बताया है viewWillLayoutSubviewsऔर viewDidLayoutSubviewsअन्य समय पर भी बुलाया जाएगा जब मुख्य दृश्य के साक्षात्कार लोड किए जाते हैं, उदाहरण के लिए जब तालिका दृश्य या संग्रह दृश्य के सेल लोड किए जाते हैं।

अद्यतन - जैसा कि @ मारी ने टिप्पणी के अंदर बताया loadViewथा , का विवरण अपडेट किया गया था


6
viewWillLayoutSubviewsऔर viewDidLayoutSubviewsअन्य समय पर भी बुलाया जाएगा जब मुख्य दृश्य के साक्षात्कार लोड किए जाते हैं, उदाहरण के लिए जब तालिका दृश्य या संग्रह दृश्य के सेल लोड किए जाते हैं।
थॉमस डब्ल्यूडब्ल्यू १

इस उत्तर में थोड़ा सा भ्रामक है: loadView () को हमेशा कहा जाता है, इसे आईबी में बनाए गए नियंत्रक के लिए देखने पर इसे ओवरराइड नहीं किया जाना चाहिए।
मारिया

@Maria कृपया आगे बढ़ें और उत्तर को संपादित करें यदि आपको लगता है कि इसमें सुधार किया जा सकता है। धन्यवाद।
onCompletion

डिफ़ॉल्ट के लिए कुछ भी गलत नहीं है viewWillAppear viewDidAppear viewDidDisappear। आपको किसी समय सुपर को कॉल करना होगा।
मिक

47

iOS 10,11 (स्विफ्ट 3.1, स्विफ्ट 4.0)

के अनुसार UIViewControllerमें UIKitडेवलपर्स,

1. लोड व्यू ()

यह वह जगह है जहाँ उप-वर्ग को अपने कस्टम दृश्य पदानुक्रम बनाने चाहिए यदि वे एक निब का उपयोग नहीं कर रहे हैं । कभी भी सीधे नहीं बुलाया जाना चाहिए।

2. loadViewIfNeeded ()

यदि यह पहले से सेट नहीं किया गया है, तो दृश्य नियंत्रक के दृश्य को लोड करता है।

3. देखेंडायलाड ()

दृश्य लोड होने के बाद कॉल किया गया। कोड में बनाए गए कंट्रोलर के लिए, यह बाद-लोड व्यू है। किसी नियब से अनियंत्रित व्यू कंट्रोलर के लिए, यह दृश्य सेट होने के बाद है।

4. देखेंविलीयर (_ एनिमेटेड: बूल)

जब दृश्य दिखाई देने वाला हो तो कॉल किया जाता है। डिफ़ॉल्ट कुछ भी नहीं करता है

5. देखेंविलीआउट साक्षात्कार ()

कंट्रोलर के व्यूज़ लेआउट से पहले ही कॉल किया जाता है। साक्षात्कार विधि लागू की जाती है। उपवर्ग आवश्यक के रूप में लागू कर सकते हैं। डिफ़ॉल्ट कुछ नहीं करता है।

6. देखेंडायलआउट साक्षात्कार ()

कंट्रोलर के व्यूज़ लेआउट के बाद ही कॉल किया जाता है। साक्षात्कार विधि लागू की जाती है। उपवर्ग आवश्यक के रूप में लागू कर सकते हैं। डिफ़ॉल्ट कुछ नहीं करता है।

7. दृश्यदर्शी (_ एनिमेटेड: बूल)

जब दृश्य को स्क्रीन पर पूरी तरह से परिवर्तित किया गया हो तो कॉल किया जाता है। डिफ़ॉल्ट कुछ भी नहीं करता है

8. देखेंविकास (_ एनिमेटेड: बूल)

जब दृश्य खारिज, कवर या अन्यथा छिपा हुआ हो तो कॉल किया जाता है। डिफ़ॉल्ट कुछ भी नहीं करता है

9. ViewDisDearappear (_ एनिमेटेड: बूल )

दृश्य खारिज, कवर या अन्यथा छिपे होने के बाद कॉल किया गया। डिफ़ॉल्ट कुछ भी नहीं करता है

10. देखेंट्रांसिशन (आकार के लिए: CGSize, समन्वयक के साथ: UIViewControllerTransitionCoordator)

जब दृश्य संक्रमण हो तो कॉल किया जाता है।

11.मूव (toParentViewController माता-पिता: UIViewController?)

12. doMove (toParentViewController माता-पिता: UIViewController?)

ये दो तरीके कंटेनर उप-वर्ग के लिए सार्वजनिक होते हैं, जब बाल नियंत्रकों के बीच संक्रमण होता है। यदि उन्हें ओवरराइड किया जाता है, तो ओवरराइड को सुपर को कॉल करना सुनिश्चित करना चाहिए।

इन दोनों विधियों में माता-पिता का तर्क शून्य है जब एक बच्चे को उसके माता-पिता से हटाया जा रहा है; अन्यथा यह नए पैरेंट व्यू कंट्रोलर के बराबर है।

13. didReceiveMemoryWarning ()

अभिभावक के आवेदन पर मेमोरी चेतावनी मिलने पर कॉल किया जाता है। IOS 6.0 पर यह डिफ़ॉल्ट रूप से दृश्य को साफ़ नहीं करेगा।


2
यह वास्तव में सच है कि stackoverflow इस पूरे धागे से सभी गलत और अधूरे जवाब शुद्ध नहीं होगा। आपका उत्तर पूर्ण लगता है जहाँ तक विधि कॉल जाती है, इसलिए मैं मानने जा रहा हूँ कि आप सही हैं और उसी के साथ काम करेंगे।
लॉजिक्ससोर रेक्स

एक nibके तहत उल्लेख के रूप में क्या है loadView?
पेट्रस थेरॉन

2
@LogicsaurusRex मैं सहमत हूँ। उसी तरह जब एसओ डुप्लिकेट या संरक्षित के रूप में प्रश्न चिह्न लगाता है, मुझे लगता है कि यह उत्तर को पुराने या अप्रचलित के
rmp251

बिंदु 5 ऊपर गलत है। viewWillLayoutSubviews()ViewController के दृश्य ऑब्जेक्ट को इसकी layoutSubviews()विधि को आमंत्रित करने से पहले कहा जाता है
williamukoh

28

आईओएस 6 और आगे की ओर। नया चित्र इस प्रकार है:

यहां छवि विवरण दर्ज करें


1
उस दृश्य को "A" कहें। एक दूसरे दृश्य "बी" पर विचार करें जो "ए" गायब होने पर दिखाई दे रहा है। "A.viewDidDisappear" से पहले या बाद में "B.viewWillAppear" है? और क्या ऐसी कोई परिस्थितियाँ हैं जहाँ उन दोनों का क्रम बदलता है?
टूलमेकरसेव

नए दृश्य की तरह लगता है (बी) विल अप्रकाशित होने से पहले बुलाया जाएगा। दूसरे प्रश्न के लिए। इसे देखने के लिए कुछ समय चाहिए।
साद

21

आइए उन तरीकों पर ध्यान केंद्रित करें, जो UIViewController के जीवनचक्र के लिए जिम्मेदार हैं :

  • सृष्टि:

    - (void)init

    - (void)initWithNibName:

  • निर्माण देखें:

    - (BOOL)isViewLoaded

    - (void)loadView

    - (void)viewDidLoad

    - (UIView *)initWithFrame:(CGRect)frame

    - (UIView *)initWithCoder:(NSCoder *)coder

  • बदलते हुए राज्य को देखने का कार्य:

    - (void)viewDidLoad

    - (void)viewWillAppear:(BOOL)animated

    - (void)viewDidAppear:(BOOL)animated

    - (void)viewWillDisappear:(BOOL)animated

    - (void)viewDidDisappear:(BOOL)animated

    - (void)viewDidUnload

  • स्मृति चेतावनी से निपटने:

    - (void)didReceiveMemoryWarning

  • आवंटन रद्द

    - (void)viewDidUnload

    - (void)dealloc

UIViewController का जीवनचक्र आरेख

अधिक जानकारी के लिए कृपया UIViewController Class Reference पर एक नज़र डालें ।


19

विधियों viewWillLayoutSubviewsऔर viewDidLayoutSubviewsआरेखों में उल्लेख नहीं किया गया है, लेकिन इन्हें बीच में viewWillAppearऔर कहा जाता है viewDidAppear। उन्हें कई बार कहा जा सकता है।


उन्हें अन्य समय पर भी बुलाया जाएगा जब मुख्य दृश्य के साक्षात्कार लोड किए जाते हैं, उदाहरण के लिए जब टेबल व्यू या संग्रह दृश्य के सेल लोड किए जाते हैं।
थॉमसडब्ल्यू १

16

पूर्व-iOS 6 के लिए हैदर का उत्तर सही है। हालाँकि, iOS 6 के रूप में व्यूडायलोड और व्यूवेल यूलोड को कभी नहीं बुलाया जाता है। डॉक्स राज्य: "दृश्य अब कम स्मृति की स्थिति में है और इसलिए इस विधि कभी नहीं कहा जाता है पर्ज रहे हैं।"


मैंने ViewWillDisappear, ViewDidDisappear, Dispose में एक ब्रेकपॉइंट लगाने की कोशिश की। जब मैं PresentViewController () विधि के साथ नेविगेट किया था, लेकिन उनमें से कोई भी आह्वान नहीं कर रहा था। क्या कारण हो सकता है ?
श्रीराज

1
लिंक काम नहीं करता ... तो OS कम मेमोरी के तहत क्या करता है?
बेटा 10

उन्हें डिस्क पर सहेजता है?
इयान वारबर्टन

16

यहाँ बहुत सारी पुरानी और अधूरी जानकारी है। के लिए iOS 6 और नए केवल:

  1. loadView[ए]
  2. viewDidLoad[ए]
  3. viewWillAppear
  4. viewWillLayoutSubviews पहली बार सीमा को अंतिम रूप दिया गया है
  5. viewDidLayoutSubviews
  6. viewDidAppear
  7. * viewWillLayoutSubviews[ख]
  8. * viewDidLayoutSubviews[ख]

फुटनोट:

(ए) - यदि आप मैन्युअल रूप से अपने दृश्य को बाहर निकालते हैं didReceiveMemoryWarning, loadViewऔर viewDidLoadफिर से बुलाया जाएगा। यही है, डिफ़ॉल्ट रूप से loadViewऔर viewDidLoadकेवल एक बार प्रति नियंत्रक नियंत्रक उदाहरण के लिए बुलाया जाता है।

(बी) को अतिरिक्त या अधिक बार कहा जा सकता है।


1
viewWillLayoutSubviewsऔर viewDidLayoutSubviewsअन्य समय पर भी बुलाया जाएगा जब मुख्य दृश्य के साक्षात्कार लोड किए जाते हैं, उदाहरण के लिए जब तालिका दृश्य या संग्रह दृश्य के सेल लोड किए जाते हैं।
थॉमस डब्ल्यूडब्ल्यू १

11

आधिकारिक डॉक में राज्य परिवर्तन की व्याख्या: https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/index.html

यह छवि विभिन्न दृश्य 'इच्छा' और 'कॉलबैक' विधियों के बीच वैध स्थिति परिवर्तन को दिखाती है

मान्य राज्य परिवर्तन:


इससे लिया गया: https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Art/UIViewController Class Reference_2x.png


0

Apple के डॉक्स के अनुसार - iOS ऐप्स विकसित करना शुरू करें (स्विफ्ट) - व्यू कंट्रोलर्स के साथ काम करें - व्यू कंट्रोलर लाइफसाइकल को समझें

viewDidLoad()- तब देखा जाता है जब दृश्य नियंत्रक की सामग्री दृश्य (इसके दृश्य पदानुक्रम के शीर्ष) को एक स्टोरीबोर्ड से बनाया और लोड किया जाता है। … अपने दृश्य नियंत्रक द्वारा आवश्यक किसी भी अतिरिक्त सेटअप को करने के लिए इस पद्धति का उपयोग करें।

viewWillAppear()- कंट्रोलर के कंटेंट व्यू को ऐप के व्यू पदानुक्रम में जोड़ने से ठीक पहले कॉल किया गया। ऑनस्क्रीन प्रस्तुत किए जाने वाले सामग्री को देखने से पहले होने वाले किसी भी ऑपरेशन को ट्रिगर करने के लिए इस पद्धति का उपयोग करें

viewDidAppear()- कंट्रोलर के कंटेंट व्यू को ऐप के व्यू पदानुक्रम में जोड़ने के ठीक बाद कॉल किया गया। किसी भी ऑपरेशन को चालू करने के लिए इस पद्धति का उपयोग करें जो कि ऑनस्क्रीन प्रस्तुत किए जाने की आवश्यकता है, जैसे डेटा लाना या एनीमेशन दिखाना।

viewWillDisappear()- देखने के नियंत्रक के कंटेंट दृश्य को ऐप के पदानुक्रम से हटा दिए जाने से ठीक पहले कॉल किया गया। इस कार्य का उपयोग क्लीनअप कार्यों को करने के लिए करें जैसे परिवर्तन करना या पहले प्रत्युत्तर स्थिति को इस्तीफा देना।

viewDidDisappear()- कंट्रोलर के कंटेंट व्यू को ऐप के व्यू पदानुक्रम से हटा देने के बाद ही कॉल किया गया। अतिरिक्त फाड़ गतिविधियों को करने के लिए इस विधि का उपयोग करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.