更改初始视图后如何加载状态栏
Posted
技术标签:
【中文标题】更改初始视图后如何加载状态栏【英文标题】:how to load status bar after changing initial view 【发布时间】:2016-02-29 12:32:07 【问题描述】:显示我的 ArticlesViewController 时出现问题。这段代码很好用,但是当出现文章页面时,没有状态栏。 我认为导航控制器有问题,所以我尝试添加
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
在 AppDelegate 的 didFinishLaunchingWithOptions 和 ArticlesViewController 的 viewDidLoad 和 viewWillAppear 中,还是没有结果
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Entity"];
localStorage = [[context executeFetchRequest:fetchRequest error:nil] mutableCopy];
NSObject *obj = [localStorage valueForKey:@"isAppLaunchedOnce"];
NSString *condition = [[[obj description] componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] componentsJoinedByString:@""];
NSCharacterSet *unwantedChars = [NSCharacterSet characterSetWithCharactersInString:@"\"()"];
condition = [[condition componentsSeparatedByCharactersInSet:unwantedChars] componentsJoinedByString:@""];
if ([condition isEqual: @"YES"])
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *rootViewController = (ArticlesViewController*)[storyboard instantiateViewControllerWithIdentifier:@"ArticlesViewController"];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.window.rootViewController = rootViewController;
if (NSFoundationVersionNumber > NSFoundationVersionNumber_ios_6_1)
navController.navigationBar.tintColor = [UIColor whiteColor];
navController.navigationItem.titleView.tintColor = [UIColor whiteColor];
NSDictionary *titleAttributes = @
NSFontAttributeName:[UIFont fontWithName:@"Helvetica-Bold" size:14.0],
NSForegroundColorAttributeName:[UIColor whiteColor]
;
navController.navigationBar.titleTextAttributes = titleAttributes;
[self.window makeKeyAndVisible];
// Override point for customization after application launch.
return YES;
【问题讨论】:
如果你有一个主故事板,为什么要在代码中创建导航控制器和文章视图控制器? @matt 据我了解,我没有创建 ArticlesViewController,我从情节提要中获取此控制器,然后在应用程序中更改我的 initialViewController。如果您认为我可以使用我现有的导航控制器 - 问我如何,它可能是一个答案 【参考方案1】:在ArticlesViewController
中添加如下方法试试看。
- (BOOL)prefersStatusBarHidden
return NO;
如果你没有在plist中设置那么你需要为每个控制器设置。
您也可以通过在didFinishLaunchingWithOptions:
中添加以下行来设置
[[UIApplication sharedApplication] setStatusBarHidden:NO];
检查 plist 文件中的这些键并将状态栏初始隐藏也设置为 NO
【讨论】:
我将此行添加到我的 appDelegate 并将状态栏设置为默认,但它不显示栏以上是关于更改初始视图后如何加载状态栏的主要内容,如果未能解决你的问题,请参考以下文章