2010-07-21 13 views
6

मेरे पास वर्तमान में एक साधारण आईफोन ऐप है जो UIView का एक कस्टम उप-वर्ग लोड करता है। पूरे आवेदन के लिए इस समय केवल एक नियंत्रक है, हालांकि प्रोग्राम को तर्कसंगत रूप से अलग करने के लिए कई UIViews हैं।कस्टम UIView और UIViewController सर्वोत्तम प्रथाओं?

मेरे वर्तमान संरचना इस तरह दिखता है:

mainView : UIScrollView 
    \__ has one subView : myCustomUIView : UIView 
      \__ has many subSubView : myOtherCustomUIView : UIView 

मुझे आशा है कि यह स्पष्ट है; एक कोलन, ज़ाहिर है, विरासत का प्रतिनिधित्व करता है।

मेरा मुद्दा यह है: मुझे निम्नतम स्तर, subSubView पर ईवेंट को अवरुद्ध करने की आवश्यकता है। यदि मुझे आवश्यकता हो तो मैं शायद इसे एप्लिकेशन नियंत्रक में कर सकता हूं, लेकिन क्या मेरे पास subSubViewController होना चाहिए? क्या मेरे पास सबव्यू कंट्रोलर भी होना चाहिए?

यदि हां, तो क्या कोई मुझे हाथ से ऐसा करने के लिए कुछ संदर्भों की ओर इशारा कर सकता है? मैं निश्चित रूप से कक्षाएं बना सकता हूं, लेकिन उन्हें कस्टम विचारों से जोड़ना अनौपचारिक लगता है। मैं इंटरफ़ेस बिल्डर का उपयोग मुख्य निब से अलग नहीं कर रहा हूं जिसमें विंडो ऑब्जेक्ट है।

मेरा मुख्य भ्रम तब होता है जब मेरे पास एक अलग नियंत्रक के साथ दृश्य में घोंसला देखा जाता है। तो मान लें कि मेरे पास subSubViewController है, लेकिन मुख्य दृश्य में अभी भी इसका मुख्य दृश्य नियंत्रक है। चूंकि subSubView मुख्य दृश्य में निहित है, क्या इससे कुछ समस्या नहीं आती है?

और क्या मुझे इनमें से किसी के लिए प्रतिनिधियों का उपयोग करना चाहिए?

सही दिशा में किसी भी झुकाव की सराहना की जाएगी।

उत्तर

10

दृश्य और दृश्य नियंत्रक जोड़े में मौजूद हैं। प्रत्येक व्यू कंट्रोलर एक दृश्य और दृश्य के सबव्यूज़ को नियंत्रित करता है। यह आवश्यक है क्योंकि दृश्य नियंत्रक घटनाओं के लिए प्रतिक्रियाकर्ता श्रृंखला में हैं। यदि एकाधिक दृश्य नियंत्रक एक ही दृश्य में सक्रिय हैं, तो प्रतिक्रियाकर्ता श्रृंखला scrambled हो जाता है।

मानक दृश्य नियंत्रकों के पास subController विशेषता नहीं है और यह समझ में नहीं आता कि एक ही नियंत्रक एक ही श्रृंखला में सक्रिय है या नहीं। नेविगेशन और टैबबार नियंत्रक पदानुक्रम नियंत्रकों को संभालने के लिए ठीक से मौजूद हैं। हालांकि, वे एक दृश्य/दृश्य-नियंत्रक जोड़ी को दूसरे के लिए स्वैप करके ऐसा करते हैं। आप सबव्यू के लिए विभिन्न नियंत्रकों को प्रदान करने के लिए नेविगेशन या टैबबार नियंत्रकों का उपयोग नहीं कर सकते हैं।

तो, चाहे किसी के भी देखने के लिए आपके पास कितने सबव्यूव हो, चाहे आप प्रति स्क्रीन केवल एक नियंत्रक के साथ समाप्त हो जाएं।

आप अपने डिज़ाइन पर पुनर्विचार करना चाहेंगे। यदि उपविभागों को प्रत्येक को अत्यधिक अनुकूलन योग्य व्यवहार की आवश्यकता होती है, तो हो सकता है कि आप उन्हें नियंत्रक पदानुक्रम में व्यक्तिगत दृश्यों जैसे कि मास्टर-विवरण डिज़ाइन पैटर्न में स्थानांतरित करना चाहें।

यदि आपको एक ही स्क्रीन पर सभी सबव्यूव्स रखना है, तो मैं यह सुझाव दूंगा कि UITableView और UITableViewController चीजों को कैसे संभालता है। (आप केवल एक संशोधित तालिकादृश्य का उपयोग करने में सक्षम हो सकते हैं।) एक टेबलव्यू एक स्क्रॉलव्यू है जिसमें कोशिकाओं, अनुभाग शीर्षक, शीर्षलेख और पाद लेखों के लिए एकाधिक सबव्यूव हैं। यह टेबलव्यू से स्पर्श को फँसाने और यह निर्धारित करने के लिए कि कौन सा सेल दृश्य छुआ था और फिर उचित कार्रवाई कर रहा था।

यदि आपको प्रत्येक सबव्यू के लिए अत्यधिक अनुकूलित व्यवहार की आवश्यकता है, तो आप प्रतिनिधि पैटर्न का उपयोग कर सकते हैं और प्रत्येक सबव्यू को एक अलग प्रतिनिधि ऑब्जेक्ट असाइन कर सकते हैं। दृश्य अपने स्वयं के स्पर्शों को फंस सकता है और अपने प्रतिनिधि को बुला सकता है।

Scrollviews अनुकूलित स्पर्श व्यवहार लागू करने के लिए इतना है कि यह तय कर सकते हैं अगर यह स्क्रॉल करें या नहीं करने की जरूरत है क्योंकि scrollview जाल अन्य दृश्यों की तुलना में एक उच्च स्तर पर छू लेती है मुश्किल हो सकता है।

+0

वास्तव में क्या मुझे पता करने की जरूरत है, धन्यवाद। –

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