2009-04-02 31 views
5

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

उदाहरण के लिए, मेरे पास एक दृश्य है जहां मुझे उपयोगकर्ता क्रियाओं के आधार पर 2 UITableViews के बीच स्वैप करने की आवश्यकता है। UITableViews दोनों को UITableViewControllerDelegate ऑब्जेक्ट की आवश्यकता होती है जो पंक्तियों को पॉप्युलेट करने के लिए परिभाषित किया गया है।

क्या आप अधिक अनुभवी आईफोन देवताओं को पाते हैं कि मुख्य दृश्य नियंत्रक को अधिभारित करना क्योंकि दोनों सबव्यू के प्रतिनिधिमंडल चीजों को करने का सही तरीका है? वर्तमान में मेरे पास 2 ऑब्जेक्ट्स हैं जो प्रत्येक UITableView के लिए एक प्रतिनिधि के रूप में कार्य करता है ताकि चीजों को और अधिक व्यवस्थित रखने की कोशिश की जा सके। यह मुझे पूरा करता है जो मुझे चाहिए, लेकिन क्या यह पालन करने के लिए एक अच्छा पैटर्न है?

मुझे लगता है कि मेमोरी प्रबंधन और मजेदार चीजों के साथ विभिन्न नुकसान से बचने के लिए वहां कुछ बेहतरीन अभ्यास हैं। अग्रिम में धन्यवाद!

उत्तर

5

आप टेबल जैसे तत्वों को पकड़ने के लिए कंटेनर के रूप में विचारों का उपयोग कर सकते हैं। तो यदि आप रेखांकित करते हैं, तो आपके पास एक कंटेनर व्यू होगा और इसके अंदर UITableViews को स्वैप करें ...

एक अच्छी दृष्टिकोण प्रत्येक तालिका के लिए अलग दृश्य नियंत्रक होना होगा। अन्यथा यह ट्रैक करने के लिए बहुत गन्दा हो जाता है कि आप किस डेटा सेट को विभिन्न टेबल व्यू प्रतिनिधि विधियों में समर्थन दे रहे हैं, और एक टेबल पर बहुत से अनुकूलन करना कठिन बनाता है जो किसी अन्य पर लागू नहीं हो सकता है।

रचनात्मक दृश्य नियंत्रकों का उपयोग करते समय जागरूक होने वाली मुख्य बात "self.navigationController" है और संबंधित कॉल कुछ भी वापस नहीं लौटाएंगी (क्योंकि वे वास्तव में आपके नेविगेशन नियंत्रक के बच्चे नहीं हैं) इसलिए आपको साथ में जाना होगा उस संदर्भ या अन्यथा तालिका दृश्य नियंत्रकों में कुछ अलग तरीके से संभाल लें।

1

इस तरह मैं खुद को स्थिति को संभालेगा। UITableView प्रति एक नियंत्रक और प्रतिनिधि। डेटासोर्स का पुन: उपयोग किया जा सकता है, अगर यह समझ में आता है (यानी यूआईटीबल व्यू दोनों में एक ही डेटा प्रदर्शित होता है) अन्यथा आपके पास प्रतिनिधि विधियां हैं, तो कौन सी तालिकाएं संदेश भेजती हैं।

स्विचिंग UITableViews मुझे UINavigationController के लिए नौकरी की तरह लगता है। आम तौर पर आईफोन पर, आप केवल अपने नियंत्रण को पुनर्व्यवस्थित नहीं करते हैं। आप UINavigationController या UITabBar का उपयोग करके पूर्ण स्क्रीन (इंटरफ़ेसबिल्डर के माध्यम से कोड में या .nib के रूप में) बनाते हैं।

2

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

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

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

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