同时改变导航根视图控制器的问题(issue while changing Navigation Ro

2019-10-22 22:36发布

我想提出一个应用程序。 其中首先用户必须注册,然后他允许使用的应用程序。

成功登录后,我希望用户直接切换到我的HomeViewController。

这里是我的代码寿变化导航根看法,但它是不工作

   TermsConditionsController *firstViewController = [[TermsConditionsController alloc]init];
   FirstPage *secondViewController =  [[FirstPage alloc]init];

   firstViewController.navigationController.viewControllers = [NSArray arrayWithObject: secondViewController];


FirstPage *nextScr = (FirstPage *) [self.storyboard instantiateViewControllerWithIdentifier:@"FirstPage"];
[self.navigationController pushViewController:nextScr animated:YES];

Answer 1:

通过使用SEGUE与HomeViewController连接您的LoginViewController。

给出的SEGUE为前名称标识符:successLogin。

并使用此方法:

[self performSegueIdentifier:@"successLogin" sender:nil]; 


Answer 2:

试试这个代码

注:更改控制器名称,按您的控制器

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UINavigationController *navController;

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"loginUserDetails"]) {
    // Already logged in
    ProfileViewController *profileVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ProfileVC"];
    navController = [[UINavigationController alloc]initWithRootViewController:profileVC];
}else{
    // Not Login Yet
    LoginViewController *loginVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"LoginVC"];
    navController = [[UINavigationController alloc]initWithRootViewController:loginVC];
}

self.window.rootViewController = navController;
}
// Write this code when user login successfully
if (/*Login Successfully*/) {
    // Then add loginUserDetails in userdefaults.
    [[NSUserDefaults standardUserDefaults] setObject:nil forKey:@"loginUserDetails"];// Instead of nil pass here your object
    [[NSUserDefaults standardUserDefaults] synchronize];
}


文章来源: issue while changing Navigation Root View Controller