登录后IOS App切换视图

时间:2014-01-31 22:03:05

标签: ios iphone objective-c

我正在学习在Xcode 5中为IOS开发。该应用程序使用了一个主 - 详细信息模板,它使用我用PHP编写的简单API填充。

我希望用户登录应用,以便应用可以代表用户向API发出请求。我将解释我的设置(可能完全错误):

我创建了一个登录视图并将其作为初始视图。我的登录视图由名为LoginViewController的类控制,该类包含“logUserIn”方法。当按下视图中的“登录”按钮时,此方法向API发送一个发布请求以检查用户的凭据,然后我的应用程序读取响应以查看它们是否有效。这就是我被困住的地方。

在我确定我拥有一套有效的凭证后,我想做两件事:

  1. 保存凭据以供后续请求使用
  2. 从登录视图切换回主 - 详细信息视图
  3. 如果应用程序加载时已经保存了有效的凭据,则loginViewController应该直接切换到主 - 详细信息视图。

    这是我的LoginViewController.m:

    #import "NTFYLoginViewController.h"
    
    @interface NTFYLoginViewController ()
    
    @end
    
    @implementation NTFYLoginViewController
    
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
            // Custom initialization
        }
        return self;
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        // Attempt to read saved credentials
        // Check they still work
        // Switch to master-detail view if credentials exist and are valid
    }
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    - (IBAction)logUserIn:(id)sender
    {
        NSString *username = self.usernameField.text;
        NSString *password = self.passwordField.text;
    
        // The code here talks to the api and checks the credentials, 
        // i've swapped it for pseudo code below as the actual code 
        // is irrelevant
    
        if(user is logged in)
        { 
            // Save credentials
            // Switch to master-detail view
        }
    
        // Display login error    
    }
    
    @end
    

    所以,这就是我真正想知道的:

    1. 这是最好的方法吗?
    2. 如何从LoginViewController切换到MasterViewController?

1 个答案:

答案 0 :(得分:1)

使用KeyChain services保存登录凭据,以及攻击者不希望轻易访问的其他敏感信息。

要返回主视图控制器,您可以采用多种方法。最简单的方法是在应用程序启动时(或确定用户需要输入凭据时)在主服务器上以模态方式显示登录视图控制器。用户输入凭据并确定用户已通过身份验证后,将登录视图控制器关闭回主视图控制器。