2011-12-10 11 views
14

मैं कई दृश्य नियंत्रकों के साथ एक ऐप बना रहा हूं: मेरे पास UITabBarController है जिसमें 4 UINavigationController है। मैं, सभी नव सलाखों मेरी कस्टम रंग होना चाहता हूँ नीले कहते हैं, जो मैं अपने अनुप्रयोग प्रतिनिधि में ऐसा करने से प्राप्त:आईओएस 5: क्या आप विशिष्ट कक्षाओं में यूआईपीपीरेंस अनुकूलन को ओवरराइड कर सकते हैं?

[[UINavigationBar appearance] setTintColor:[UIColor blueColor]]; 

लेकिन मैं यह भी जो एक नक्शा है एक विशेष दृश्य नियंत्रक है, और इस दृश्य के लिए नियंत्रक मैं इसे काला अपारदर्शी शैली बनाने के लिए UIAppearance का उपयोग करके नीले नेविबार सेट को ओवरराइड करना चाहता हूं। मैं viewDidLoad अंदर इस फोन करके की कोशिश की है:

self.navigationController.navigationBar.barStyle = UIBarStyleBlack; 
self.navigationController.navigationBar.translucent = YES; 

लेकिन कुछ नहीं होता। क्या यह किया जा सकता है या क्या मुझे यूआईपीपीरेंस छोड़ना है और गुणों को navigationBar पर मैन्युअल रूप से प्रत्येक व्यू कंट्रोलर के लिए सेट करना है?

उत्तर

1

कि के लिए आप क्या करेंगे:

id specialNavBarAppearance = [UINavigationBar appearanceWhenContainedIn:[SpecialViewController class], nil]; 

[specialNavBarAppearance setBarStyle:UIBarStyleBlack]; 
[specialNavBarAppearance setTranslucent:YES]; 
+0

मेरा 'स्पेशल व्यू कंट्रोलर' का दृश्य केवल एनएवी नियंत्रक स्टैक पर धक्का दिया जाता है। मैंने स्टोरीबोर्ड में दृश्य पदानुक्रम बनाया है, इसलिए मेरे दृश्य नियंत्रकों में से कोई भी प्रश्न में Navcontroller के लिए एक सूचक है। जिस तरह से मैं इसे समझता हूं, प्रश्न में UINavigationBar को एक कंटेनर क्लास के भीतर निहित करने की आवश्यकता होती है जिसका उपस्थिति प्रॉक्सी मैं बात करता हूं। क्या इसका मतलब है कि मुझे स्टोरीबोर्ड छोड़ना है? – lms

+3

कॉलिंग सेट ट्रांस्लुकेंट एक उपस्थिति प्रॉक्सी पर वास्तव में काम नहीं करता है। यह कहता है 'अवैध संपत्ति प्रकार, सी आमंत्रण चयनकर्ता में, _UIAppearance_setTranslucent:' ' –

24

जिस तरह से आप कर रहे हैं यह काम करने के लिए माना जाता है, लेकिन ऐसा नहीं है। यह हालांकि काम करता है:

[[UINavigationBar appearanceWhenContainedIn:[YourOtherVC class], nil] setTintColor:[UIColor blackColor]]; 
+1

आप कमाल हैं! –

8

viewWillAppear में अपने परिवर्तन ले जाएँ: viewDidLoad के बजाय: और यह काम करना चाहिए।

+0

यह मेरे लिए काम किया। – honus

+1

आईओएस 7 पर मेरे लिए काम नहीं किया। –

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

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