有条件地显示ViewController Xcode-iOS应用程序

有条件地显示ViewController Xcode-iOS应用程序,ios,objective-c,authentication,nsuserdefaults,Ios,Objective C,Authentication,Nsuserdefaults,我对Xcode非常陌生,我想找到一种方法,在用户登录到我的应用程序或没有登录到我的应用程序时显示不同的内容 我有一个标签应用程序。经过身份验证的用户应该直接访问选项卡式视图。但未登录的用户应登录到身份验证页面 我的猜测是,我需要像这样的东西: if (user) { // Do stuff if user logged in. } else { // Display the authentication page. } 但我不知道如何做到这一点,我也没有发现任何关于这一点的东西

我对Xcode非常陌生,我想找到一种方法,在用户登录到我的应用程序或没有登录到我的应用程序时显示不同的内容

我有一个标签应用程序。经过身份验证的用户应该直接访问选项卡式视图。但未登录的用户应登录到身份验证页面

我的猜测是,我需要像这样的东西:

if (user) {
    // Do stuff if user logged in.
} else {
    // Display the authentication page.
}
但我不知道如何做到这一点,我也没有发现任何关于这一点的东西。我在找线索

编辑:

我的问题不是如何知道用户是否经过身份验证,而是如何在一个案例中显示特定页面,在另一个案例中显示另一个页面

我应该在哪里以及如何编写代码,因为我已经知道如何区分经过身份验证的用户:

   if (user is authenticated) {
// SHOW FIRSTVIEWCONTROLLER
   } else {
// SHOW SECONDVIEWCONTROLLER
  }
编辑2:

我有一个选项卡式应用程序,有3个选项卡和一个主面板(没有XIB)。我想在选项卡式页面之前添加一个页面,用户可以在其中进行身份验证

所以我需要在一个条件下显示这个viewController。如果用户未通过身份验证,我将显示该页面,如果用户通过身份验证,我将直接显示选项卡式页面


同样,我不想知道如何区分用户是否经过身份验证,我只是不想知道如果满足条件,如何显示ViewController。

为此,您需要使用()。要使用这个类,您需要保存一个值——bool、数字、字符串或一些对象,用户下次打开应用程序时可以读取这些值

您可以使用类似的方式告知您的应用程序用户已登录

 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"loggedIn"];
然后,用户下次进入您的应用程序时,只需查看他是否已登录:

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"loggedIn"]) {
  //show information
} else { 
  //Show Login Screen

如果需要存储实际凭据,只需使用
setObject:forKey:
并使用
objectForKey:
读回对象即可

我会在第一个选项卡中显示控制器的ViewDidDisplay方法中的身份验证页面。如果使用presentViewController:animated:completion:执行此操作,且动画参数设置为“否”,则用户将首先看到模式视图。因此,您可以将逻辑放在ViewDidAspect方法中,以确定是否进行该演示

登录什么?登录我的应用程序。我想有一个身份验证页面,只在第一次出现,然后缓存用户会话,以便在用户返回时直接显示选项卡部分。您需要提供更多详细信息。这个问题太笼统了。也许您可以查看
NSUserDefaults
您提供的编辑很有帮助,但您确实需要提供更多详细信息。所有这些都取决于应用程序的设置方式。您是否使用故事板、XIB以编程方式创建视图?你到底想做什么?不,这是想要还是不想要?非常感谢。但我想我的问题没有被理解。我知道如何区分用户是否经过身份验证。我只是不知道如何告诉他“如果他是,展示这一页,如果他不是,展示这一页”。那么请看下面的答案。这就是我一直在寻找的提示。非常感谢你!我正在这样做,但我想离开底部的选项卡栏,以便用户只在需要时登录。因此,我使用的是推式情节提要转换,而不是模态转换。问题是,如果用户再次点击该选项卡,则不会调用方法
viewdide
。我该如何防止这种情况发生?@macool,我不知道我是否理解你的担心。你是说viewDidAppear没有被调用,但你希望它被调用吗?@rdelmar我刚刚发布了我的问题: