目标C语言 iOS登录界面使用故事板[中介设计模式?]



我有一个带有ip,端口,用户名和密码文本字段的登录屏幕,以获取值并连接到ASMX web服务。连接工作完美无瑕。

实现登录周期的最佳方法是什么?定义一个空白视图控制器作为rootViewController,并在LoginViewController中实现一个协议来委托给这个空白视图控制器,并检查那里的登录凭据,如果成功链接到主视图?我喜欢干净和解耦的代码。所以我决定使用中介设计模式。

我有一个JSONHelper类谁将做序列化。但我不知道是否委托给loginVC或使用它的一个实例在空白视图控制器(如果它是正确的方式)。

您可能希望首先从您想要呈现的视图开始,并检查是否需要身份验证。如果是,模态地呈现一个没有动画的视图控制器。假设你有以下视图控制器:

  • InitialViewController:故事板中的根视图控制器
  • LoginViewController:用户可以输入凭据的屏幕
  • AuthenticationHelper:另一个处理身份验证的类。它可以存储用户名并传入钥匙链,在启动时检索它们并自动尝试登录用户。

一旦应用启动,你就可以要求AuthenticationHelper让用户登录。如果它已经存储了用户名和密码,它可以在不显示登录屏幕的情况下自动完成。如果没有,它可以显示LoginViewController。

注意以下内容:

  • 如果由于任何原因用户在会话中注销,或者如果您更改了密码服务器端并且需要再次要求用户进行身份验证,这也很有用。AuthenticationHelper应该负责在用户输入凭据时呈现LoginViewController。
  • 一旦认证成功(或失败),AuthenticationHelper应该触发一个NSNotification来通知其他viewcontroller这个事件。另外,当认证成功时,AuthenticationHandler应该解除LoginViewController

一旦登录成功,你就可以从它手动segue到主视图控制器。这只是一小部分代码。没有代表之类的。就像这样:

    if (login){
[self performSegueWithIdentifier:@"YOUR SEGUE ID"]; 
}

Than方法然后调用prepareForSegue方法,如果你愿意,你可以在那里传递值给主视图控制器。Xcode会为你处理所有的内存管理和视图的回收。

当然,您需要为此使用故事板。希望这对你有所帮助。

最新更新