2016-11-17 45 views
0

我想爲我的應用程序創建一個單元測試,檢查導航欄的顏色並將其與應用程序中爲主題顏色保存的用戶默認值進行比較。是否有可能獲得導航欄當前「barTintColor」?

我似乎無法找到訪問酒吧當前顏色的方法。這甚至有可能嗎?

- (void) testColorThemeNavigationBar { 
    UINavigationBar *navigationBar = [[UINavigationBar alloc] init]; 
    MSMColorManager *manager = [[MSMColorManager alloc]init]; 
    navigationBar = [manager getNavBar]; 

    UIColor *navBarColor = [[UIColor alloc]init]; 
    UIColor *currentThemeColor = [[UIColor alloc] init]; 

    navBarColor = navigationBar.barTintColor; 
    currentThemeColor = [manager themeColor]; 

    XCTAssertEqualObjects(navBarColor, currentThemeColor); 
} 

現在我的測試失敗說,對於navBarColor值爲空,而我的currentThemeColor填充了正確的UIColorObject。我相信這是因爲barTintColor方法僅用於設置顏色,而不是檢索。

我也試過backgroundColor無濟於事。

謝謝。

+0

你使用過你的調試器嗎? 'navigationBar'的價值是什麼?這可能是'無'。爲什麼你創建一個導航欄只是爲了扔掉它,並從MSColorManager中獲取一個導航欄? – rmaddy

回答

1

因爲我在這裏的一個應用程序中使用了基於主題的設置,所以我已經完成了至今獲得navigationBar色調的顏色。

獲取導航欄色調顏色:

AppDelegate *objPCAppDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate; 
NSLog(@"%@",[objPCAppDelegate.window rootViewController]); 

UINavigationController *navController = (UINavigationController*)[objPCAppDelegate.window rootViewController]; 
NSLog(@"%@",navController.navigationBar.barTintColor); 

不要創建的UINavigationController新的目標只是讓你形成並application.window在測試情況下使用它。

注意:如果您使用導航欄的默認顏色,它將始終返回nil,因爲默認導航欄沒有顏色。

要獲得顏色,您必須將自定義顏色設置爲比您可以在測試用例中獲得的顏色更多的導航欄,而不是&。

+0

我會試試這個,謝謝! – syntakks

+0

以上答案解決你的問題?? – CodeChanger

相關問題