iOS - 注销功能

Posted

技术标签:

【中文标题】iOS - 注销功能【英文标题】:iOS - Logout functionality 【发布时间】:2015-06-04 14:01:59 【问题描述】:

我有一个注销按钮,我需要重置应用程序。看起来很标准,但我没有看到太多关于如何去做这样的事情的信息。到目前为止,我已经设法删除了一个代表当前用户的 NSUserDefaults 对象,我使用FBSDKLoginManager().logOut() 以防用户通过 Facebook 登录,然后我将根视图控制器重置为其初始视图控制器:

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window = UIWindow(frame: UIScreen.mainScreen().bounds)
var storyboard = UIStoryboard(name: "Main", bundle: nil)
let rootViewController = HomeViewController()

appDelegate.window!.rootViewController = rootViewController
appDelegate.window!.makeKeyAndVisible()

但是,我不确定是否还有其他事情要做。我看到一个答案说您需要遍历所有 Windows 子视图并删除它们,但是当您更改 rootViewController 时这仍然是必要的吗?还有什么我想念的吗?此外,到目前为止,当您单击注销时,主屏幕才会出现。有没有办法让改变根视图控制器成为动画?

【问题讨论】:

这取决于你的应用是如何构建的,没有单一的答案...... 有一个 HomeViewController 用于登录和注册模式。登录后,有一个容器视图控制器,其中包含一个用于滑出侧菜单的视图控制器,以及一个包含内容的导航控制器。内容页面可能有也可能没有子页面,但您只能访问菜单以从主(初始)内容页面访问注销按钮。差不多就是这样…… 您可能正在寻找回到主屏幕的放松转场。此处接受的答案:***.com/questions/12561735/… 很好地解释了它们是什么以及如何使用它们。 【参考方案1】:

大多数情况下,如果您更改根视图控制器,如果其他视图控制器不再处于层次结构中,它们将被释放。要检查你可以在视图控制器中实现 deinit,它应该不再在内存中。

deinit 
  println("SomeViewController was deallocated")

你可以试试这个过渡动画

UIView.transitionWithView(self.window, duration: 0.5, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: () -> Void in self.window.rootViewController = otherViewController, completion: nil)

【讨论】:

以上是关于iOS - 注销功能的主要内容,如果未能解决你的问题,请参考以下文章

google plus 应用注销按钮的创建和功能

CSDN产品周报第31期|PC端开放账号注销功能

读取超时的 Firebase 消息注销通知失败

Spring MVC:登录和注销功能?

OneLogin SAML 注销功能

android中的注销功能