1

好吧,所以我想添加一個子視圖到我的navigationController的導航欄,它完美的工作,但是,當推一個細節控制器時,我不想那個子視圖從推動控制器可以在詳細視圖控制器的導航欄中看到。如何添加自定義的UIView到UINavigationBar只有一個UIViewController

我很感激任何幫助/提供的指針。重申:我需要子視圖僅顯示在導航控制器的根目錄中,並且不在任何細節控制器中。

這裏是我的創建和加入navigationController的子視圖當前代碼:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.ImageView = [[UIImageView alloc]init]; 
    self.ImageView.frame = CGRectMake(0, 8.5, 320, 36); 
    self.ImageView.contentMode = UIViewContentModeScaleAspectFit; 
    self.ImageView.image = [UIImage imageNamed:@"Logo"]; 
    self.ImageView.clipsToBounds = YES; 
    [self.navigationController.navigationBar addSubview:self.ImageView]; 
} 
+0

爲什麼你要在導航欄上添加uiimageview。你可以簡單地嘗試setBackgroundImage – codercat

+0

你不知道setBackgroundImage UINavigationBar – codercat

+0

不,這不是我所追求的。我正在爲一個徽標進行動畫製作。 – klcjr89

回答

2

最好的辦法是

  1. 標籤添加到您的ImageView的。
  2. 使用標記&訪問您的imageView將它的alpha設置爲1,您的mainViewcobtroller的viewWillAppear中要顯示此值。
  3. 在新的視圖控制器的viewWillAppear中的方法,訪問視圖具有相同的標籤&然後將其設置的alpha爲0

這應該解決您的問題 如果您需要的代碼,PLZ評論。

+0

我嘗試了類似的更早(減去視圖標記的方法),以及發生了什麼是我用默認的邊緣彈出手勢,它會出現在錯誤的視圖控制器中,並顯示閃爍。 – klcjr89

+0

請使用這種方法&注意viewWillAppear方法,而不是viewDidAppear。 –

+0

我使用的是viewWillAppear方法,問題是它在使用交互式彈出手勢時會立即出現。 – klcjr89

1

,當你推到otherViewControllers

[[self.navigationController.navigationBar viewWithTag:101] removeFromSuperview]; 

重新從其他的viewController回來加入這一行;

- (void)viewWillApper 
{ 

    self.ImageView = [[UIImageView alloc]init]; 
    self.ImageView.frame = CGRectMake(0, 8.5, 320, 36); 
    self.ImageView.contentMode = UIViewContentModeScaleAspectFit; 
    self.ImageView.image = [UIImage imageNamed:@"Logo"]; 
    self.ImageView.clipsToBounds = YES; 
    self.ImageView.tag =101; 
    [self.navigationController.navigationBar addSubview:self.ImageView]; 
} 
1

也許你可以標記視圖,self.ImageView.tag = 100;那麼在細節控制器的viewWillAppear中:

UIView view = (UIView *) [self.navigationControler.navigationBar viewWithTag:100]; 
view.hidden = true; 

和viewWillDisappear

UIView view = (UIView *) [self.navigationControler.navigationBar viewWithTag:100]; 
view.hidden = false; 
0

這將影響調用視圖ocontroller:
視圖 - 控制你的navigationController

- (void) viewDidLoad { 
     // Create/instantiate from Nib/Use already initialized UIView 
     [self.navigationItem setTitleView:<your subView here>]; 
} 

Wh你導航到其他viewController,子視圖不會在那裏。

相關問題