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

时间:2013-05-12 15:15:32

标签: ios objective-c authentication

我是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个标签和一个主板(没有xibs)。我想在标签页面之前添加一个页面,用户可以在其中进行身份验证。

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

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

2 个答案:

答案 0 :(得分:2)

我将在第一个选项卡中显示控制器的viewDidAppear方法中的身份验证页面。如果你使用presentViewController执行此操作:animated:completion:将动画参数设置为NO,模态视图将是用户看到的第一个内容。因此,您可以将逻辑放在viewDidAppear方法中,以确定是否执行该演示。

答案 1 :(得分:1)

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

您可以使用类似的内容告诉您的应用用户已登录。

 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"loggedIn"];

然后,用户下次进入您的应用时,只需查看他是否已登录:

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

如果您需要存储实际凭据,请使用setObject: forKey:并使用objectForKey:回读对象。