【问题标题】:Swift logout process快速注销过程
【发布时间】:2015-08-16 21:05:18
【问题描述】:

我正在快速构建一个与 API 交互的应用程序。用户可以通过两种方式退出,一种是单击退出按钮,另一种是在调用 API 时接收 401 响应。

我计划在我的 API 类中使用 NSNotificationCenter 在收到不成功的响应时广播一个事件,这样就可以在 API 类之外的一个地方处理诸如 401、400、500 之类的通用处理。

为了防止在多个地方重复注销所涉及的逻辑,我创建了一个类,它将清除所有现有令牌并显示登录视图控制器。当在视图控制器中单击注销按钮或响应观察者接收到 401 响应时,可以使用此类。

我的问题是,由于逻辑不在视图控制器内部,我不确定如何呈现登录视图控制器,因为我无权访问 self.presentViewController 方法

【问题讨论】:

  • 您的类可以告诉应用委托呈现视图控制器或切换您的根视图控制器。 (见this example

标签: ios swift logout nsnotificationcenter


【解决方案1】:

您需要将该职责传递给视图控制器。

我过去的处理方式是使用键值观察器(或RAC)来监控活动令牌。当那个令牌消失时,我换掉了根控制器。

您在哪里执行此操作取决于您如何构建事物。应用委托是一个合理的位置。

【讨论】:

  • 谢谢,我现在已经很接近了。我通过在应用程序委托中处理的通知中心创建了一个事件。我现在唯一的问题是我无法让当前视图控制器用于呈现登录视图控制器。由于根视图控制器未处于活动状态,我收到错误“警告:尝试在 上呈现 ,其视图不在窗口层次结构中!”
猜你喜欢
  • 2014-12-21
  • 2015-01-25
  • 2017-08-21
  • 2018-11-10
  • 1970-01-01
  • 2020-08-11
  • 2020-07-28
  • 2020-10-05
  • 1970-01-01
相关资源
最近更新 更多