2013-07-10 5 views
5

मैं एमवीसी और आईओएस विकास के लिए कुछ नया हूं, और मुझे लगता है कि यूआई स्टाइल इस प्रतिमान में कैसे फिट बैठता है।आईओएस में स्टाइलिंग यूआई ऑब्जेक्ट्स एमवीसी का उल्लंघन करता है?

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

- (void) viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; // required 

    // set background color of view 
    [[self view] setBackgroundColor:[UIColor darkGrayColor]]; 
} 

यह, MVC का स्पष्ट उल्लंघन होने के लिए के रूप में मैं नियंत्रक के कोड के अंदर शैली तर्क लागू करने कर रहा हूँ लगता है। मुझे एक HTML ऐप लिखने और स्टाइल शीट्स का उपयोग करने के बजाय यह समान लगता है, मैं जावास्क्रिप्ट में स्थानीय रूप से शैलियों को लागू करने के लिए कोड लिखता हूं। क्या यह आईओएस की कमजोरी है या क्या मैं इसे गलत कर रहा हूं?

+0

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

+1

में एम या वी का उपयोग करने से बचना होगा। कोई तर्क दे सकता है कि शैली डेटा का एक रूप है। चूंकि एक नियंत्रक सामान्य रूप से डेटा के साथ एक दृश्य प्रदान करता है, जिसमें नियंत्रक शैली के साथ दृश्य की आपूर्ति समान होता है। – rmaddy

उत्तर

2

Apple's docs से लिया:

कुछ नियंत्रक वस्तुओं भी एक दृश्य वस्तु बता अपनी उपस्थिति या व्यवहार

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

+0

लेकिन इस मामले में मैं सिर्फ स्थिर बटन, लेबल इत्यादि के रूप में स्टाइल कर रहा हूं। उपयोगकर्ता क्रियाओं या मॉडल में बदलाव के जवाब में कोई संबंध नहीं है। मुझे लगता है कि आईओएस सीएसएस के बराबर गुम हो सकता है। – Erich

+1

दृश्य कहीं और बनाया जाना चाहिए क्योंकि दृश्य अपनी रचना का आह्वान नहीं करता है।हालांकि इंटरफ़ेस बिल्डर आपके द्वारा इनमें से अधिकांश को छिपाता है, इसका मतलब यह नहीं है कि यह उसी तरह से विचार नहीं बना रहा है – giorashc

0

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

में एम या वी का उपयोग करने से बचना होगा, फॉर्म के सौंदर्य प्रसाधन और सौंदर्यशास्त्र के रूप में देखें स्टाइल के रूप में अच्छी तरह से, लेकिन नीचे की रेखा, आप नियंत्रकों से इन पहलुओं में हेरफेर कर सकते हैं ...

1

दरअसल स्क्रीन आपकी "दृश्य" है, और आपका "नियंत्रक" एक अलग रंग का उपयोग करने के लिए आपके दृश्य में एक संदेश भेज रहा है पृष्ठ - भूमि।

यदि आपके पास स्क्रीन ऑब्जेक्ट वाला डेटा ऑब्जेक्ट था, तो यह आपका "मॉडल" हो सकता है। उस स्थिति में, आप नियंत्रक के माध्यम से अपने मॉडल से डेटा को देखने के लिए गुजर रहे होंगे।

0

जैसा कि अन्य ने कहा, यदि आप डेटा के रूप में रंग और शैलियों को समझते हैं, तो नियंत्रक को इसकी देखभाल करने देना ठीक है।

लेकिन आप UIviews को subclass भी कर सकते हैं और आंतरिक रूप से शैली सेट कर सकते हैं।

मान लें कि आपके पास TrafficLightView : UIView एक संपत्ति id trafficLight है। आप सेटटर को ओवरराइट कर सकते हैं और ऑब्जेक्ट की स्थिति के अनुसार दृश्य के पृष्ठभूमि रंग को सेट कर सकते हैं। trafficLight.

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