4

我的应用程序使用典型的身份验证方案,其中用户使用他的凭据登录服务器,服务器返回一个身份验证令牌,然后本地存储在客户端 (iPhone) 上。

现在,存储的身份验证令牌不太可能但可能会随着时间的推移而变得无效。由于使用该无效令牌发出的每个请求都会失败,因此我想在第一次发生该故障时通过“将用户注销”来处理该故障。注意:该请求可能在后台线程中发出,因为应用程序会定期与服务器同步。

退出意味着:

  1. 删除本地存储的令牌
  2. 删除用户存储的所有其他内容(在 Sqlite 中)
  3. 将用户“重定向”到登录控制器

因此,用户可能正在查看应用程序中的某些内容,而令牌变得无效并且退出过程开始了。

由于所有内容都被删除(#2),向她展示登录控制器是不够的,因为在登录并关闭该控制器之后,以前的内容不再存在。

为了防止这种副作用,我想完全删除层次结构中的所有视图控制器,无论触发注销时有多深。

所以我的问题是:

在呈现登录控制器之前“杀死”所有活动控制器的最佳方法是什么?

4

1 回答 1

7

将您的 LoginViewController 分配给窗口的rootViewController. 这是文档中对 rootViewController 的描述。这听起来和你想要完成的完全一样。

根视图控制器提供窗口的内容视图。将视图控制器分配给此属性(以编程方式或使用 Interface Builder)将视图控制器的视图安装为窗口的内容视图。如果窗口具有现有的视图层次结构,则在安装新视图之前删除旧视图。

于 2013-10-03T16:28:50.013 回答