2011-12-17 16 views
6

पर भेजा गया अपरिचित चयनकर्ता मेरे पास ऐप स्टोर में एक ऐप है जिसे मैं फ़्लोररी एनालिटिक्स का उपयोग कर रहा हूं। और मैं समय-समय पर एक अनचाहे अपवाद त्रुटि प्राप्त करता रहता हूं जिसे मैं समझ नहीं सकता।UIBarButtonItem setTintColor

NSInvalidArgumentException: - [UIBarButtonItem setTintColor:]: गैर मान्यता प्राप्त चयनकर्ता उदाहरण 0x177b20 संदेश के लिए भेजा: आवेदन दुर्घटनाग्रस्त हो

क्या मैं बाहर है समझ नहीं सकता, मैं किसी भी बार बटन आइटम की स्थापना नहीं कर रहा हूँ कहीं भी टिंट रंग। मेरे पास कुछ कस्टम दृश्य हैं जहां मैं सही बार बटन आइटम सेट कर रहा हूं, लेकिन कोई टिंट नहीं है।

बटन के मेरे अधिकांश उपयोग इस तरह दिखते हैं।

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UINavigationBar *bar = [self.navigationController navigationBar]; 
    [bar setTintColor:[UIColor colorWithRed:0 green:69.0/255 blue:118.0/255 alpha:1]]; 
    self.navigationItem.title = @"Edit User"; 

    UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] 
            initWithTitle:@"Save" 
            style:UIBarButtonItemStylePlain 
            target:self 
            action:@selector(editUser:)]; 
    self.navigationItem.rightBarButtonItem = saveButton; 
    [saveButton release]; 

    UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] 
            initWithBarButtonSystemItem:UIBarButtonSystemItemCancel 
            target:self 
            action:@selector(cancel)]; 

    [[self navigationItem] setLeftBarButtonItem:cancelButton]; 
    [cancelButton release]; 

} 

अगर किसी को इस मुद्दे में कोई अंतर्दृष्टि है, तो मैं बहुत आभारी रहूंगा। मैं अपने प्रोजेक्ट में आईओएस 4.0 और ऊपर लक्षित कर रहा हूं।

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

+1

मुझे हाल ही में कुछ समस्याएं आई हैं। कभी-कभी, आपको केवल नेविगेशन नियंत्रक के उप-दृश्यों पर setTintColor को कॉल करना होगा। ([[[self.navigationController.navigationBar subviews] objectAtIndex: 1] setTintColor: [UIColor redcolor]];) कम से कम यह मेरे लिए तय किया गया है। – CodaFi

उत्तर

7

समस्या 2 कक्षाओं पर गलती -सेट टिंटकॉलर उपयोग के साथ थी। -setTintColor 4.x उपकरणों पर समर्थित नहीं है, इसलिए जब पुराने डिवाइस टिंट रंग में टक्कर लेंगे तो आप क्रैश हो जाएंगे।

+0

मैंने यह भी पाया कि 'TintColor' को IOS 5.0 और नीचे' MPVolumeView' के लिए समर्थित नहीं है। – ForceMagic

3

आप की कोशिश की है:

self.navigationController.navigationBar.tintColor =[UIColor colorWithRed:0 green:69.0/255 blue:118.0/255 alpha:1]; 

? अपने AppDelegate.m में अंत में के बाद @end इस कोड को :

@implementation UINavigationBar (UINavigationBarCategory) 
- (void)drawRect:(CGRect)rect { 
    UIColor *color = [UIColor YOUR_COLOR]; 
    self.tintColor = color; 
     //if you want image for background use this code 
    UIImage *img = [UIImage imageNamed: @"IMAGE_NAME.png"]; 
    [img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 

@end 

आशा इस मदद

+0

एक उत्तर की तुलना में एक टिप्पणी की तरह लगता है। – Till

+0

नहीं। मैं सिम्युलेटर या मेरे डिवाइस पर इस मुद्दे को दोहराने के लिए प्रतीत नहीं कर सकता। मैं इसे आज़माउंगा और आपको बता दूंगा। –

1

यदि आपका लक्ष्य iOS 4.0 है आप यह कर सकते हैं। मेरे लिए यह काम है।

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