iphone - Unable to load a UIView in a separate ViewController with an NSObject -


ऐप एक दृश्य-आधारित प्रोजेक्ट प्रकार है। मैं एक दृश्य XIB (UIView Nib) में एक NSObject का उपयोग कर रहा हूं, इस ऑब्जेक्ट को एप के टॉपबार के रूप में मानता हूं।

मुख्य नियंत्रक UIViewController प्रारंभिक स्क्रीन लोड करता है यह इस तरह दिखता है,

मैं ऊपरी छवि में टॉप बारव्यूव (लाल रंग) में अलग-अलग डिज़ाइन किए गए एक टॉप व्यू लोड करना चाहता था (नया वाला, इसे एक्स कहते हैं)।

अब, मेरे पास NSObject है जो "एक्स" में रहता है और सभी घटनाओं को बांधता है और एक्स पर पूर्ण नियंत्रण रखता है, इसकी एक एकल ऑब्जेक्ट।

NSObject क्लास में मेरे पास एक तरीका है स्वयं ऑब्जेक्ट इन्सेंस और यूविज़ ("एक्स") का एक उदाहरण यह नियंत्रित करता है।

विधियां हैं,

  - (UIView *) ReturnTopBarView {NSLog (@ "called 2 "); वापसी topBarObject.topBarView; } // सभी दृश्य नियंत्रकों के लिए शीर्ष बार उदाहरण प्रदान करता है // सिंगलटन कार्यान्वयन + (आईडी) GetTopBarObject {if (topBarObject == नीला) {NSLog (@ "1 बुलाया गया"); वापसी [[TopBarObject alloc] init]; } शीर्ष पर वापस लौटें; }  

टॉपबारदृश्य पूरी तरह डिज़ाइन किया गया टॉपबारव्यूव्यू ("एक्स") है, जिसे मुख्य दृश्य नियंत्रक के टॉपबारव्यूव्यू (उपरोक्त छवि में लाल रंग सेगमेंट) में आना है।

मैंने मुख्य दृश्य नियंत्रक में एक विधि लिखा है:

  - (शून्य) सेटहोमस्क्रीन {self.topView = [[TopBarObject GetTopBarObject] ReturnTopBarView]; }  

मैं अपने कोड में - (शून्य) सेटहोमस्क्रीन को आह्वान कर सकता हूं। अपवाद डीडीएफिनिशन के रूप में [viewcontroller SetHomeScreen]

यह वास्तव में NSObject (TopBarObject class) में संबंधित तरीकों को कॉल करता है, लेकिन मैं देख रहा हूँ (mainviewcontroller.topbarview) में दृश्य को देखने नहीं। यह अब मुख्य मुद्दा है।

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

मुझे लगता है कि सिंगलटन गलत है। यह कुछ ऐसा होना चाहिए:

  + (id) GetTopBarObject {if (topBarObject == शून्य) {topBarObject = [[TopBarObject alloc] init]; } शीर्ष पर वापस लौटें; }  

आपके कोड में topBarObject कभी भी शुरू नहीं किया जाता है और इसलिए प्रत्येक बार GetTopBarObject को एक नया TopBarObject बनाता है और इसे वापस देता है ...


Comments

Popular posts from this blog

asp.net - Change the driver in the connection string to a data source in VB.Net -

Getting started consuming web services in a Ruby on Rails 3 application -

objective c - iPhone and it's wireless area -