如果用户已经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
值。