我的故事板中有一个UINavigationController和两个执行以下功能的viewControllers:
InitialViewController:这将是应用程序的主屏幕。
FirstTimeViewController:是用户打开时显示的屏幕 该应用程序是第一次。
我的UINavigationController有一个具有以下代码的类:
- (void)viewDidLoad {
[super viewDidLoad];
if ([[ReadPlist initWithPlist:@"Configuration.plist" key:@"initialConfiguration"] boolValue]){
FirstTimeViewController *firstTimeController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"firstTimeView"]; //or the homeController
[self.navigationController pushViewController:firstTimeController animated:NO];
}else{
InitialViewController *initialController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"initialView"]; //or the homeController
[self.navigationController pushViewController:initialController animated:NO];
}
}
基本上,如果特定字段处于活动状态,此代码将验证.plist文件,如果YES表示应用程序第一次运行,则在此情况下它将调用相应的viewController。
但是这段代码没有用,我看到一个带有黑色视图的NavigationController。我要做的就是在界面构建器中做同样的事情,只需从UIVavigationController中的UINavigationController中拖出一行并设置为“Root View Controller”,但在我的情况下,我试图以编程方式执行此操作。
我怎么能这样做?
答案 0 :(得分:0)
当你在控制器ViewDidload或你的成功代码中推送到FirstTimeViewController Set Bool(用户默认值)时,然后在下面的代码中的AppDelegate中设置。
if(Bool value = Yes)
{
FirstTimeViewController * FS = [[UIStoryboard storyboardWithName:@" Main" bundle:nil] instantiateViewControllerWithIdentifier:@" FirstTimeViewController"]; UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:FS]; [navController setNavigationBarHidden:YES]; self.window.rootViewController = navController; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; }
答案 1 :(得分:0)
我的回答是
- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)options
{
UINavigationController *navController = (UINavigationController *)self.window.rootViewController;
FirstTimeViewController *firstTimeVC = [navController.storyboard instantiateViewControllerWithIdentifier:@" FirstTimeViewController"];
InitialViewController *initialVC = [navController.storyboard instantiateViewControllerWithIdentifier:@" InitialViewController"];
if ([[ReadPlist initWithPlist:@"Configuration.plist" key:@"initialConfiguration"] boolValue])
{
// FirstTime
navController.viewControllers = [NSArray arrayWithObject:firstTimeVC];
}
else
{
// Initial
navController.viewControllers = [NSArray arrayWithObject:initialVC];
}
[self.window makeKeyAndVisible];
return YES;
}