如果用户已经logging,跳过视图

我有这个故事板:

故事板

第二个视图控制器是login屏幕。

我检查用户是否已经login,如果它是真的,我想跳过login屏幕,并去tableviewcontroller。 另一方面,当用户没有login时,显示login视图,当用户进行login时,我希望下一个视图成为导航堆栈中的第一个视图。

现在我将tableview设置为根元素,其他文章中解释了这个代码

NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:[self.navigationController viewControllers]]; InitialViewController *nvc = [[InitialViewController alloc] init]; [viewControllers replaceObjectAtIndex:0 withObject:nvc]; [self.navigationController setViewControllers:viewControllers]; 

它的工作原理,但是当我想单击一个单元格,使细节查看它不起作用。 如果我删除login屏幕,并在导航控制器中的根设置表视图它的工作原理。

有人知道为什么

其他方式跳过login视图赞赏

编辑:有了这个解决scheme,它的工作,现在我有两个导航控制器,我用这个代码从一个到另一个

 UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]]; InitialViewController *initial = [storyBoard instantiateViewControllerWithIdentifier:@"appRootController"]; AppDelegate *myAppDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; myAppDelegate.window.rootViewController = initial; 

我不知道这是否是正确的解决scheme,但它的工作原理。

我现在需要一次你所需要的。 我做了一次用户login,我在NSUserDefaults设置适当的值。 然后在我的AppDelegate.m ,我检查NSUserDefaults值,以确定用户是否已经login

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法

然后我设置rootViewController适当的视图控制器。 当你使用故事板时,我会做的是创build一个storyBoard的实例如下:

 UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"YourStoryBoardName" bundle:[NSBundle mainBundle]]; 

然后使用NSUserDefaults来检查用户信息。

  // Check user login if([[NSUserDefaults standardUserDefaults] valueForKey:@"AlreadyLogin"]) { // So, here user already login then set your root view controller, let's say `SecondViewController`` SecondViewController *secondViewController = [storyBoard instantiateViewControllerWithIdentifier:@"SecondViewController"]; // then set your root view controller self.window.rootViewController = secondViewController; } else { // It means you need to your root view controller is your login view controller, so let's create it LoginViewController *loginViewController= [storyBoard instantiateViewControllerWithIdentifier:@"LoginViewController"]; self.window.rootViewController = loginViewController; } 

不要忘记将你的视图控制器标识符设置为适当的值,然后不要忘记当用户注销时清除NSUserDefaults值。