在一个UINavigationController类中设置rootViewController

时间:2016-03-26 02:24:18

标签: ios objective-c

我的故事板中有一个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”,但在我的情况下,我试图以编程方式执行此操作。

我怎么能这样做?

2 个答案:

答案 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;
}