2

不工作我有一個奇怪的問題。每當我的應用程序啓動,我不中的AppDelegate如下:UITabBar setTintColor後[_window setRootViewController]

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    [[UINavigationBar appearance] setBarTintColor:[UIColor whiteColor]]; 
    [[UINavigationBar appearance] setTintColor:[UIColor mainLightBlue]]; 
    [[UITabBar appearance] setTintColor:[UIColor mainLightBlue]]; 

    [IJContext setDefaultContext:[[IJContext alloc] init]]; 
    RKLogConfigureFromEnvironment(); 
    return YES; 
} 

然後,如果我的用戶成功登錄,我在AppDelegate中的以下內容:

-(void)presentNewsFeed 
{ 
    RKLogConfigureByName("RestKit/Network", RKLogLevelDebug); 
    UIViewController *newTopViewController = [[UIStoryboard storyboardWithName:@"MainiPadStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"GlobalInitialSliding"]; 
    [_window setRootViewController:newTopViewController]; 
} 

在這一點上,setTintColor工作正常。現在,無論何時用戶註銷,我都會撥打:

- (void)presentLoginScreen 
{ 
    UIViewController *newTopViewController = [[UIStoryboard storyboardWithName:@"MainiPadStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"Login"]; 
    [_window setRootViewController:newTopViewController]; 
} 

它又位於AppDelegate中。如果重新登錄,我再次致電presentNewsFeed。但是,第二次,setTintColor不再有效,並且我的所有選項卡在選擇它們時都沒有實際的tintColor。所以我的用戶實際上不知道選擇了哪個選項卡。任何想法爲什麼?

回答

2

我在viewController中有另一個tintColor的聲明,並且它與appDelegate中的那個搞混了!

感謝

+1

然後接受這個答案。 – Pawan

1

從你的問題: 然後,如果我的用戶成功登錄,我做了AppDelegate如下:

-(void)presentNewsFeed   
{ ... }   

這意味着你的第一個畫面是登錄屏幕那麼你爲什麼不設置setRootViewController作爲yourLoginScreenViewController?在您的代碼中,您還將收到類似Applications are expected to have a root view controller at the end of application launch的警告?因爲當你在那時候會啓動你的應用程序時,你的窗口沒有rootViewController等等。

,如果你按照我的建議,那麼它很容易讓你得到LoginScreen每當你LoggedOut,通過使用下面的代碼:

[self.navigationController popToRootViewControllerAnimated:YES]; 

因爲在這裏你RootViewController是你LoginScreen所以你直接到達你的RootViewController,也不用擔心重新創建RootViewController

+0

不工作設置平紅顏色的TabBar

[[UITabBar appearance] setBackgroundColor:[UIColor redColor]]; 

此代碼。實際上,第一個RootViewController不是由我設置的,而是由我的故事板設置的。那麼,我後來在那個presentNewsFeed函數中複製了第一個rootViewController,因爲某些原因我不再有我的barTintColor ... – abisson

+0

解決了我的問題,但它不是因爲您的解決方案!對不起......(我在其他地方設置了tintColor,它與AppDelegate中的原始定義衝突。 – abisson

0

您可以將圖像設置(1px for width and 49 px for height)並保存它,例如:tabBg.png,然後替換:

[[UITabBar appearance] setTintColor:[UIColor mainLightBlue]]; 

本:

UIImage *tabBarBackground = [UIImage imageNamed:@"tabBg.png"]; 
[[UITabBar appearance] setBackgroundImage:tabBarBackground]; 

我希望這可以幫助你。

1

嘗試用於設置圖像試試這個

UIImage *tabBackground = [[UIImage imageNamed:@"tab_bg"] 
          resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
[[UITabBar appearance] setBackgroundImage:tabBackground]; 
[[UITabBar appearance] setSelectionIndicatorImage: 
[UIImage imageNamed:@"tab_select_indicator"]];