2013-10-07 12 views
8

iOS7 के तहत काम कर रहता है मैं एक मुद्दा जहां वापस बटन आइटम दिखाई नहीं देंगे यह एक विशिष्ट पृष्ठभूमि छवि के साथ स्थापित किया गया है, तो अनुभव की जा रही:वापस बटन अजीब UINavigationController में गायब लेकिन

int imageSize = 21; //REPLACE WITH YOUR IMAGE WIDTH 

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-400.f, 0) 
                forBarMetrics:UIBarMetricsDefault]; 
UIImage *barBackBtnImg = [[UIImage imageNamed:@"BackArrowDark.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, imageSize, 0, 0)]; 

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:barBackBtnImg 
               forState:UIControlStateNormal 
               barMetrics:UIBarMetricsDefault]; 

करने पर यह, कोई भी व्यू कंट्रोलर जो मैंने नेविगेशन नियंत्रक में धक्का दिया है, उसके पास कोई बैक बटन आइटम दिखाई नहीं दे रहा है, भले ही यह कहां होना चाहिए, यह दिखाई देगा, और इस दृश्य नियंत्रक के बाद के किसी भी धक्का स्क्रीन पर मौजूद बटन होगा।

यह समस्या केवल आईओएस 7 के तहत दिखाई दे रही है: सब कुछ आईओएस 6 के तहत पूरी तरह से काम करता है।

बाएं बटन को पूरी तरह से बाएं बटन के साथ बदलकर बैकबटन इटैम बैक स्वाइप अक्षम करता है, इसलिए यह कोई विकल्प नहीं है।

कोई विचार क्या मैं गलत कर रहा हूं?

आपके विचार के लिए बहुत बहुत धन्यवाद।

उत्तर

14

विभिन्न समाधान की कोशिश के बाद, मैंने पाया कि backIndicatorImage बदलते iOS7 के तहत सबसे अच्छा काम करता है, और यह iOS7 इंटरफ़ेस प्रतिमान के साथ लाइन में हो रहा है:

[[UINavigationBar appearance] setTintColor:[UIColor grayColor]]; 
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault]; // Takes out title 

UIImage *backButtonImage = [UIImage imageNamed:@"BackArrowDark.png"]; 

if ([UINavigationBar instancesRespondToSelector:@selector(setBackIndicatorImage:)]) { 
    [[UINavigationBar appearance] setBackIndicatorImage:backButtonImage]; 
    [[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:backButtonImage]; 
} else { 
    int imageSize = 21; // REPLACE WITH YOUR IMAGE WIDTH 

    [[UIBarButtonItem appearance] setBackButtonBackgroundImage:[backButtonImage resizableImageWithCapInsets:UIEdgeInsetsMake(0, imageSize, 0, 0)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
} 

इस विधि के साथ:

  • नेविगेशन नियंत्रक में वापस जाने पर, बैक बटन आइटम संक्रमण डिफ़ॉल्ट संकेतक के समान होता है (बैक बटन से प्रस्थान एक साथ आईओएस 6 के नीचे स्लाइडिंग);
  • आईओएस 6 के तहत, बैकबटन बदल दिया गया है और इसका डिफ़ॉल्ट आईओएस 6 व्यवहार रहता है।
  • मुझे खुशी है!
3

सुनिश्चित करें कि आप दृश्य नियंत्रक में इस बुला नहीं हैं:

self.navigationController.navigationBar.tintColor = [UIColor redColor]; 

iOS 7 में, इस नेविगेशन पट्टी टिंट होगा, लेकिन यह भी अपने बटन अदृश्य कर देगा, फिर भी कार्यात्मक बस के रूप में आप का वर्णन कर रहे हैं ।

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