问题,同时更改导航根视图控制器

我正在制作一个应用程序。 第一个用户必须login,然后他允许使用该应用程序。

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

这是我的代码tho改变导航根视图,但它不工作

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]; 

在这里输入图像说明

通过使用segue将您的LoginViewController与HomeViewController连接起来。

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

并使用这个方法:

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

试试这个代码

注意:根据您的控制器更改控制器名称

 - (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]; }