2012-07-16 51 views
5

मेरे application:didFinishLauchginWithOptions: में मैंने अपने नियंत्रणों के लिए डिफ़ॉल्ट उपस्थिति सेट की हैं।UIBarButtonItem उपस्थिति मुझे एक अपवाद की आवश्यकता है

UIImage *transparentImage = [UIImage imageNamed:@"transparent.png"]; 

[[UIBarButtonItem appearance]setBackgroundImage:transparentImage 
             forState:UIControlStateNormal 
            barMetrics:UIBarMetricsDefault]; 

यह मेरे लिए बहुत अच्छा काम करता है क्योंकि यह सामान्य UIBarButton एक पारदर्शी फ्लैट दिखता है। हालांकि, एक बटन I है जिसे UIDocumentInteractionController से प्रस्तुत किया जाता है जब आप "त्वरित रूप" दबाते हैं जिसमें सही उपस्थिति नहीं होती है।

enter image description here

मेरा मानना ​​है कि यह केवल barbuttonitem मैं कि सिर्फ एक छवि है है। क्या कोई तरीका है कि मैं इसे कुछ विपरीत देने के लिए इस बटन को संशोधित कर सकता हूं ताकि यह इतना बदसूरत न लगे? यहां तक ​​कि मूल पृष्ठभूमि भी मेरी naviagationbar पृष्ठभूमि के खिलाफ ठीक दिखता है।

उत्तर

0

मैं

को लागू करने को समाप्त documentInteractionControllerWillBeginPreview, documentInteractionControllerDidEndPreview

willBegin में मैं सही बटन और navigationItem के सेट सही बटन नहीं के बराबर करने के लिए बरकरार रहती है। मैं ऐसा इसलिए करता हूं क्योंकि अंत में दृश्य पहले ही दिखाया गया है, इसलिए उपस्थिति को रीसेट करने से इसके अतिरिक्त वापस नहीं आते हैं।

- (void)documentInteractionControllerWillBeginPreview:(UIDocumentInteractionController *)controller 
{ 
    [[UIBarButtonItem appearance] setBackgroundImage:nil forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
    [[UIBarButtonItem appearance] setBackgroundImage:nil forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 
    [[UIBarButtonItem appearance] setBackgroundImage:nil forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 

    self.rightButton = self.navigationItem.rightBarButtonItem; 
    self.navigationItem.rightBarButtonItem = nil; 
} 

- (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller 
{ 
    UIImage *transparentImage = [UIImage imageNamed:@"transparent.png"]; 
    [[UIBarButtonItem appearance] setBackgroundImage:transparentImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
    [[UIBarButtonItem appearance] setBackgroundImage:transparentImage forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 
    [[UIBarButtonItem appearance] setBackgroundImage:transparentImage forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 

    self.navigationItem.rightBarButtonItem = self.rightButton; 
} 

यह सही नहीं है लेकिन इसकी तुलना में यह काफी बेहतर है। यदि कोई भी प्रस्तुत कर सकता है कि प्रस्तुत करने वाले नियंत्रक के rightBarButtonItem को कैसे संभालना है, तो मैं इसके बजाय आपका उत्तर स्वीकार करूंगा।