UIView - दृश्य लोड होने पर कैसे सूचित किया जाए?


79

वहाँ कुछ भी करने के लिए इसी तरह की है viewDidLoadकी UIViewControllerएक के लिए UIView??? मुझे जल्द से जल्द UIView(उपवर्ग UIView) लोड किया गया है , और कुछ क्रियाएं करने की सूचना दी जानी चाहिए ।

जवाबों:


268

आपको किस प्रकार के कार्यों को करने की आवश्यकता है, इसके आधार पर, कई तकनीकें हैं:

  1. -(id)initWithFrame:(CGRect)frame- यूआईवीवाईई के निर्दिष्ट आरंभीकरण; हमेशा इसे शुरू करने के लिए एक UIView को भेजा जाता है, जब तक कि दृश्य एक निब से लोड न हो;
  2. -(id)initWithCoder:(NSCoder *)coder - जब भी दृश्य निब से लोड किया जाता है, तो हमेशा एक यूआईवीवाई को प्रारंभ करने के लिए भेजा जाता है;
  3. -(void)awakeFromNib- निब में सभी वस्तुओं को प्रारंभिक और जुड़ा होने के बाद भेजा जाता है; यदि आप ऑब्जेक्ट को निब से लोड करते हैं तो ही लागू होते हैं; आपको सुपर कहना चाहिए;
  4. -(void)willMoveToSuperview:(UIView *)newSuperview- दृश्य में एक अन्य दृश्य के लिए एक सबव्यू के रूप में जोड़े जाने से तुरंत पहले भेजा गया; newSuperviewजब आप इसके पर्यवेक्षण के दृश्य को हटाते हैं तो यह शून्य हो सकता है;
  5. -(void)willMoveToWindow:(UIWindow *)newWindow- दृश्य से पहले तुरंत भेजा जाता है (या इसके पर्यवेक्षक) को एक खिड़की में जोड़ा जाता है; newWindowजब आप किसी विंडो से दृश्य निकालते हैं तो वह शून्य हो सकता है;
  6. -(void)didMoveToSuperview - दृश्य पदानुक्रम में सम्मिलित किए जाने के तुरंत बाद भेजा गया;
  7. -(void)didMoveToWindow- यह देखने के तुरंत बाद भेजा जाता है कि इसकी विंडो प्रॉपर्टी सेट हो जाए। -

मूल रूप से, आप एक दृश्य में पदानुक्रम (4 और 5) और उसके बाद (6 और 7) में प्रविष्टि से पहले, एक निब (3) से लोड करने के बाद, इनिशियलाइज़ेशन (1 और 2) के दौरान अपने कार्यों को करने के लिए चुन सकते हैं।


बहुत सही जवाब (बहुत विस्तृत) धन्यवाद। मैं एक खंडित नियंत्रण को संशोधित कर रहा था और यह परिवर्तनों को प्रदर्शित नहीं कर रहा था क्योंकि मैं init के दौरान संशोधन विधि को कॉल कर रहा था, मैंने इसे doMoveToWindow में स्थानांतरित कर दिया था और इसने सभी समस्याओं को ठीक कर दिया था
aryaxt

1
ऐसा लगता है कि यह सब देखने से पहले हुआ है। व्यूअलाड्राकंट्रोलर में
एलेक्स चैन

3
-(void)willMoveToSuperview:(UIView *)newSuperviewमेरी सभी समस्याओं का इलाज था, बहुत-बहुत धन्यवाद!
एरियन एस

मैं फिर से भूल गया कि कुछ चीजें काम नहीं करती हैं यदि आप उन्हें प्रारंभिक प्रक्रिया की शुरुआत में एक यूआईवीवाई के अंदर शांत करते हैं ..... तो इसे 7 में करना या वहां से देरी के साथ प्रदर्शन करना हमेशा काम करेगा! :)
एलेक्स Cio
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.