登录后IOS应用程序切换视图

登录后IOS应用程序切换视图,ios,iphone,objective-c,Ios,Iphone,Objective C,我正在学习用Xcode 5开发IOS。该应用程序使用一个主细节模板,它是从我用PHP编写的一个简单API填充的 我希望用户登录该应用程序,以便该应用程序可以代表用户向API发出请求。我将解释我设置了什么(这可能是完全错误的): 我创建了一个登录视图,并将其作为初始视图。我的登录视图由名为LoginViewController的类控制,该类包含“logUserIn”方法。当按下视图中的“登录”按钮时,此方法向API发送post请求以检查用户的凭据,然后我的应用程序读取响应以查看它们是否有效。这就是

我正在学习用Xcode 5开发IOS。该应用程序使用一个主细节模板,它是从我用PHP编写的一个简单API填充的

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

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

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

  • 保存凭据以供后续请求使用
  • 从登录视图切换回主详细视图
  • 如果应用程序加载时已保存有效凭据,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
    
    我想知道的是:

  • 这是最好的方法吗
  • 如何从LoginViewController切换到MasterViewController
  • 使用保存登录凭据以及您不希望攻击者轻松访问的其他敏感信息


    要返回到主视图控制器,可以采取几种方法。最简单的方法是,当应用程序启动时(或当它确定用户需要输入凭据时),以模式方式将登录视图控制器显示在主机的顶部。一旦用户输入凭据,并且您确定该用户已通过身份验证,请将登录视图控制器退回到主视图控制器。

    @MrBr保存凭据时,用户默认设置是个坏主意。用户默认值以未加密的形式保存在plist文件中。应该使用钥匙链。