0

在我的應用程序中,我有一個窗口tintColor,它將所有設置設置爲紅色。用戶按下根視圖控制器上的酒吧按鈕項目(紅色項目),並且其呈現具有導航欄(紅色導航項目)的UIModalPresentationSheet。當按下那個導航項的按鈕時,它會拉起一個完整的模態視圖,現在這個模態視圖也有一個導航欄,但所有的導航項都是灰色的;它們是可用的,並且仍然運行正確的功能,但是它們的顏色是灰色的。任何想法爲什麼?起初我嘗試用灰色按鈕編程,然後通過故事板完成,並在場景中直接着色導航項目,並且它們看起來是紅色的,但在啓動時,它們在模態視圖上是灰色的。誰能告訴我爲什麼?奇怪的UINavigationBar行爲?

下面是模式的看法是如何呈現:

- (void)barButtonItemPressedOnUIModalPresentationSheet { 

    asdfVC *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"showAsdf"]; 
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; 

    [self presentViewController:navigationController animated:YES completion:nil]; 
} 

奇怪的是,我設置的導航色調,按鈕色彩,即使是在正確的VC類視圖的色彩,但它似乎完全忽略它。難道是因爲我設置了一個導航欄之前介紹了嗎?

回答

0

您可以嘗試在您的視圖控制器和您的導航欄上的設置色調顏色的地方顯示爲綠色:

viewController.view.tintColor = [UIColor redColor]; 
viewController.navigationController.navigationBar.tintColor = [UIColor redColor]; 
+0

這就是奇怪的事情!我的班裏有這樣的設置,但按鈕是灰色的!難道是我在設置導航欄之前實際呈現視圖控制器? –

1

你可以嘗試設置顏色與appearance屬性整個應用程序。 將其設置在AppDelegate中,用戶界面將在所有視圖中顯示相同。

要設置tintColor紅色用途:

[[UINavigationBar appearance]setTintColor:[UIColor redColor]; 

[[UIBarButtonItem appearance]setTintColor:[UIColor redColor]; 

您還可以檢查出更多的定製下面的代碼:

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]setTintColor:[UIColor redColor]]; 
0

我遇到這在我的應用程序中完全相同的異常,並嘗試了所有你嘗試過的東西。我已經把代碼設置爲藍色(在我的情況下)在viewWillAppear和viewDidAppear中,而沒有任何東西可以解決它。我的猜測是這是一個IOS錯誤。

+0

非常不幸。我已經向蘋果提交了一個錯誤報告,希望能儘快得到解決! –

1

您可以在AppDelegate.h類中創建UINavigationController的屬性。

@property (strong, nonatomic) UINavigationController *navigationController; 

在你AppDelegate.m類寫下面的代碼在didFinishLaunchingWithOptions方法

self.navigationController=[[UINavigationController alloc]initWithRootViewController:self.UIModalPresentationSheet]; 
self.window.rootViewController = self.navigationController; 

現在,在您UIModalPresentationSheet類的viewDidLoad方法編寫代碼

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.navigationController.navigationBar.tintColor = [UIColor redColor]; 
} 

希望它會工作。

+0

我的應用程序委託中沒有UIModalPresentationSheet,所以它給我一個錯誤「在Appdelegate類型的對象上找不到屬性UIModalPresentationSheet」。 –

+0

你的UIModalPresentationSheet是一個ViewController類型?請解釋 – MahboobiOSDeveloper

0

發生這種情況是因爲Apple假設我們不會呈現超過1個視圖控制器並將背景和所有欄按鈕項目(不知道爲什麼)變暗爲默認行爲以將焦點放在最前面的視圖上。

要解決此問題,只需在DidFinishLaunchingWithOptions中的應用程序窗口上強制將tintAdjustmentMode設置爲Normal即可。

self.window.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;