我正在学习在 Xcode 5 中为 IOS 开发。该应用程序使用主从模板,它从我用 PHP 编写的简单 API 填充。
我希望用户登录应用程序,以便应用程序可以代表用户向 API 发出请求。我将解释我设置的内容(这可能是完全错误的):
我已经创建了一个登录 View 并将其设为初始 View 。我的登录 View 由一个名为 LoginViewController 的类控制,该类包含一个“logUserIn”方法。当按下 View 中的“登录”按钮时,此方法会向 API 发送一个发布请求以检查用户的凭据,然后我的应用程序会读取响应以查看它们是否有效。这就是我被困的地方。
确定我拥有一组有效的凭据后,我想做两件事:
- 保存凭据以供后续请求使用
- 从登录 View 切换回主从 View
如果在应用加载时已经保存了有效凭据,则 loginViewController 应直接切换到主从 View 。
这是我的 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?
最佳答案
使用 KeyChain services保存登录凭据以及您不希望攻击者轻易访问的其他敏感信息。
要返回主视图 Controller ,您可以采用多种方法。最简单的方法是在应用程序启动时(或当它确定用户需要输入凭据时)在 master 顶部以模态方式显示登录 View Controller 。一旦用户输入凭据并且您确定用户已通过身份验证,将登录 View Controller 关闭并返回到主视图 Controller 。
关于IOS App登录后切换 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21490927/