IOS App登录后切换 View

标签 ios iphone objective-c

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

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

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

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

  1. 保存凭据以供后续请求使用
  2. 从登录 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

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

  1. 这是执行此操作的最佳方法吗?
  2. 如何从我的 LoginViewController 切换到 MasterViewController?

最佳答案

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

要返回主视图 Controller ,您可以采用多种方法。最简单的方法是在应用程序启动时(或当它确定用户需要输入凭据时)在 master 顶部以模态方式显示登录 View Controller 。一旦用户输入凭据并且您确定用户已通过身份验证,将登录 View Controller 关闭并返回到主视图 Controller 。

关于IOS App登录后切换 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21490927/

相关文章:

iphone - 将 Gmail 联系人导入到 Iphone 应用程序...?

ios - swift : Disable FrontViewController when Rear is Displayed

iphone - Objective C 中 Bool 的值

ios - 神奇记录自定义核心数据迁移不拉现有数据

objective-c - NSData 编码为 Unicode 返回 nil

ios - SwiftUI:在打开 View 时条件/ObservableObject 更改时更新 View

ios - 在 iOS 模拟器上测试统一类型标识符?

iOS 应用程序在滑动手势期间崩溃?

ios - 更改 Swift 中的导航栏按钮图标

ios - 属性上的 Xcode 属性与从 'UIViewController' 继承的属性不匹配