2012-09-25 16 views
18

मैं कुछ यूआई तत्वों पर appearanceWhenContainedIn विधि का उपयोग कर रहा हूं जिसे मैं अपने आईओएस 6 ऐप में कस्टमाइज़ करना चाहता हूं। समस्या मैंने पाया कि मेरे अनुकूलन में से कोई भी लागू होते हैं अगर मैं एक से अधिक कंटेनर वर्ग प्रदान करते हैं ताकि तरह का प्रयास करें:आईओएस 6 उपस्थिति जब कई वर्गों में निहित

// Works neither for toolbar nor navbar items 
[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIToolbar class], nil] 

// Works fine (but only for navbar items, obviously) 
[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] 

सरकारी डॉक्स का कहना है कि इस विधि के लिए पैरामीटर एक शून्य-समाप्त सूची हो सकता है कई वर्गों के, लेकिन मेरे मामले में यह कभी भी जिस तरीके से काम करना चाहिए, वह कभी भी काम नहीं करता है। क्या मुझसे कोई चूक हो रही है?

उत्तर

43

डॉक्स से:

appearanceWhenContainedIn:

...

रिसीवर के लिए उपस्थिति प्रॉक्सी एक दिया रोकथाम पदानुक्रम में।

कि वास्तव में इसका मतलब है कि शून्य-समाप्त सूची UIBarButtonItem के लिए कंटेनर क्लासों की सूची नहीं परिभाषित करता है, लेकिन कंटेनर पदानुक्रम ऊपर से नीचे तक, UIBarButtonItem के लिए बहुत

[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIToolbar class], nil] 

रिटर्न उपस्थिति प्रॉक्सी UINavigationBar के अंदर है कि , और बदले में UINavigationBar UIToolbar के अंदर है।

या

[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class],[ViewController class], nil] setTintColor:[UIColor redColor]]; 

सेट UIBarButtonItems है कि किसी भी UIToolBar जो ViewController वर्ग में हैं में हैं के लिए लाल रंग रंग।

तो यूआईएनविगेशनबार और यूआईटीयूएलबार के लिए अलग-अलग सेट करने के लिए आपको +appearanceWhenContainedIn: विधि

पर 2 अलग-अलग कॉल की आवश्यकता होगी
संबंधित मुद्दे