我有一个奇怪的问题。每当我的应用程序启动时,我都会在AppDelegate中执行以下操作:
- (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。所以我的用户实际上无法知道选择了哪个标签。关于为什么的任何想法?
答案 0 :(得分:2)
我在tintColor
中有viewController
的另一个声明,它正在弄乱appDelegate
中的那个!
由于
答案 1 :(得分:1)
从你的问题:
然后,如果我的用户成功登录,我会在AppDelegate
:
-(void)presentNewsFeed
{ ... }
这意味着您的第一个屏幕是登录屏幕那么为什么不将setRootViewController
设置为 yourLoginScreenViewController ?在您的代码中,您还会收到Applications are expected to have a root view controller at the end of application launch
之类的警告?因为当你启动应用程序时,你的窗口没有 rootViewController 所以。
如果您按照我的建议,那么只要您 LoggedOut ,就可以轻松获得 LoginScreen ,使用以下代码:
[self.navigationController popToRootViewControllerAnimated:YES];
因为您RootViewController
是登录屏幕,所以您可以直接到达RootViewController
,也不用担心重新创建RootViewController
。
答案 2 :(得分:1)
尝试使用此代码为tabbar设置扁平红色
[[UITabBar appearance] setBackgroundColor:[UIColor redColor]];
用于设置图像试试这个
UIImage *tabBackground = [[UIImage imageNamed:@"tab_bg"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UITabBar appearance] setBackgroundImage:tabBackground];
[[UITabBar appearance] setSelectionIndicatorImage:
[UIImage imageNamed:@"tab_select_indicator"]];
答案 3 :(得分: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];
我希望这会对你有所帮助。