मुझे हाल ही में पता चला है कि UIView
एस में केवल UIViewController
एस होनी चाहिए जब वे पूरी विंडो भरें (या UIViewController
जैसे UINavigationController
या UISplitViewController
द्वारा प्रबंधित की जाती हैं)। यह उद्धरण UIViewController के लिए प्रलेखन से है:तर्क को UIView में जाना चाहिए या (जब लागू हो) इसके UIViewController को देखना चाहिए?
आपको दृश्य नियंत्रकों का उपयोग उन दृश्यों को प्रबंधित करने के लिए नहीं करना चाहिए जो उनकी खिड़की का केवल एक हिस्सा भरते हैं-अर्थात, एप्लिकेशन सामग्री आयत द्वारा परिभाषित क्षेत्र का केवल एक हिस्सा है। यदि आप कई छोटे विचारों से बना इंटरफेस रखना चाहते हैं, तो उन्हें सभी को एक रूट दृश्य में एम्बेड करें और अपने दृश्य नियंत्रक के साथ उस दृश्य को प्रबंधित करें।
मैं आमतौर पर UIView में अपना दृश्य तर्क डालता हूं, भले ही इसे UIViewController द्वारा प्रबंधित किया जाता है, फिर भी मुझे अक्सर UIViewController जैसे इसकी नेविगेशन नियंत्रक संपत्ति के गुणों तक पहुंचने की आवश्यकता होती है। हालांकि, UIViews को उनके UIViewController से अवगत नहीं होना चाहिए।
मेरा निष्कर्ष यह है कि दृश्य तर्क एक UIView के UIViewController में जाना चाहिए जब कोई मौजूद है, और UIView स्वयं अन्यथा।
वैकल्पिक रूप से, क्या यह देखने के लिए एक नियंत्रक वर्ग बनाने के लिए बेहतर अभ्यास है UIViewController का उप-वर्ग है? UIPopoverController (एक NSObject subclass) इस पैटर्न का पालन करना प्रतीत होता है, हालांकि ज्यादातर मामलों में (UIButton, आदि) दृश्यों में समर्पित नियंत्रक वर्ग नहीं लगते हैं।
इसके अलावा, क्या UIViewControllers को कभी भी nib/xib फ़ाइल के बिना उपयोग किया जाना चाहिए (यानी, एक UIView जो कोड में बनाया गया है)? – titaniumdecoy
व्यक्तिगत रूप से, मैं शायद ही कभी एनआईबी फाइलों का उपयोग करता हूं, इसलिए हाँ, आप पूरी तरह से UIViewController और उनके बिना दोस्त का उपयोग कर सकते हैं। – Alex
तथ्य यह है कि -initWithNibName: बंडल: UIViewController का नामित प्रारंभकर्ता यह इंगित करता है कि यह निब के बिना उपयोग करने का इरादा नहीं है। – titaniumdecoy