2013-11-14 9 views
15

मैं अपने आईओएस 7 ऐप में यूआईएनविगेशनबार को देखने की कोशिश कर रहा हूं। मैं निम्नलिखित कर रहा हूँ:आईओएस 7 UINavigationBar उपस्थिति पहली बार काम नहीं कर रहा है ...

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    m_sNumberToCall = @""; 

    UIBarButtonItem * btn = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"IconHome.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(btHomeTouched:)]; 
    self.navigationItem.leftBarButtonItem = btn; 

    self.navigationController.navigationBar.translucent = YES; 


    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"TVCNavBack.png"] forBarMetrics:UIBarMetricsDefault]; 

    NSShadow * shadow = [[NSShadow alloc] init]; 
    shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8]; 
    shadow.shadowOffset = CGSizeMake(0, 1); 
    [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: 
                  [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], 
                  NSForegroundColorAttributeName, 
                  shadow, 
                  NSShadowAttributeName, 
                  [UIFont fontWithName:@"Helvetica-Bold" size:21.0], 
                  NSFontAttributeName, 
                  nil]]; 
} 

लेकिन, पहली बार मैं UITableViewController यह मानक iOS7 नेविगेशन बार है प्रस्तुत करते हैं, तो मैं घर प्रेस और इसे फिर से प्रस्तुत करते हैं और यह मेरा नया रूप है।

कोई विचार क्यों पहली बार काम नहीं करता है?

+0

कोड में कोड को स्थानांतरित करने का प्रयास करें DidAppear – Ilario

+0

मैंने इसे आजमाया और नहीं जाना, मैंने इसे देखने में भी कोशिश की। विल्लएपियर। – LilMoke

+1

किसी और के लिए जो सैम मुद्दे का अनुभव कर सकता है, मैंने इस से कोड बदल दिया: [[UINavigationBar उपस्थिति] setBa ... इस पर: [self.navigationController.navigationBar setBa ... साथ ही setTitleTextAttributes लाइन में। यहां जवाब मिला: http://stackoverflow.com/questions/17361500/how-to-set-navigation-bar-image-ins-ios-7 – LilMoke

उत्तर

26

उपस्थिति को न बदलें लेकिन सीधे नेविगेशन बार को न बदलें। उपस्थिति केवल भविष्य के उदाहरणों को प्रभावित करती है लेकिन पहले से बनाए गए लोगों को नहीं।

बदलें:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"TVCNavBack.png"] forBarMetrics:UIBarMetricsDefault]; 

रहे हैं:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"TVCNavBack.png"] forBarMetrics:UIBarMetricsDefault]; 
+6

मुझे वास्तव में एक ही समस्या है और मैं अपने नेविगेशन नियंत्रक से पहले उपस्थिति सेट कर रहा हूं तत्काल है ... –

+0

यह बताता है कि बहुत कुछ! – kokluch

+0

असली समाधान जैसा कि नीचे @ fabf98dev द्वारा उत्तर दिया गया है। आपको नेविगेशन कंट्रोलर का उपयोग करने की आवश्यकता नहीं है, आपको यह सुनिश्चित करने की आवश्यकता है कि आप अपना पहला व्यू कंट्रोलर दिखाने से पहले यह लाइन (UINavigationBar.Appear ..) को कॉल कर रहे हैं। –

2

जवाब से पहले ही पृष्ठभूमि छवि के साथ मदद करता है लेकिन title text attributes नहीं के साथ।

आप अपने कोड को बदलने की जरूरत नहीं है, लेकिन तुम सब करने की है

applicationDidFinishLaunchingWithOptions

करने के लिए इसे अपने AppDelegate.m फ़ाइल में ले जाने के लिए है।

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