2011-06-02 77 views
0

我遇到了標題和UINavigationController的問題。我在UIViewControllerCurrent上使用下面的代碼,當我從NextViewController返回時,NavBar的標題仍然是「Previous」..可以幫助我解決這個問題嗎?謝謝。UINavigationController中的「標題」問題

[self setTitle:@"Previous"]; 
NextViewController *controller = [[NextViewController alloc] init]; 
[[self navigationController] pushViewController:controller animated:YES]; 
[controller release], controller = nil; 

- (void)viewWillAppear:(BOOL)animated; {  
[self setTitle:@"Real Title"];  
[super viewWillAppear:animated]; } 

回答

2

我會嘗試讓你得到

[super viewDidAppear:animated]; 
[self setTitle:@"Real Title"]; 

交換兩行

[self setTitle:@"Real Title"];  
[super viewWillAppear:animated]; 

,我會投入到這些viewDidAppear。

+0

如果我把它們放在viewWillAppear中,它會無縫地發生,否則(至少在模擬器中)您會注意到標題正在改變。謝謝您的幫助 :) – Ahsan 2011-06-02 13:29:34

0

嘗試使用下面的UINavigationController委託方法。

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated; 
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated; 

使用其中一種委託方法更改標題。

0

如果dasdoms解決方案不起作用,請嘗試以下操作。

在彈出之前在NextViewController中運行此代碼。

for (int i =0; i < [[self.navigationController viewControllers] count]; i++) 
    { 
     UIViewController *aController = [[self.navigationController viewControllers] objectAtIndex:i]; 

     if ([aController isKindOfClass:[PreviousViewController class]]) 
     { 
      PreviousViewController *aPreviousViewController = (PreviousViewController *)aController; 
      aPreviousViewController.title = @" Real Title"; 
     } 

    } 
相關問題