iOS - 注销功能

Rya*_*ski 1 logout uiviewcontroller ios segue swift

我有一个注销按钮,我需要重置应用程序.看起来非常标准但我没有看到关于如何做这样的事情的很多信息.到目前为止,我已经设法删除了代表当前用户的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()
Run Code Online (Sandbox Code Playgroud)

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

Max*_*Max 6

大多数情况下,如果更改根视图控制器,则如果其他视图控制器不再处于层次结构中,则将取消分配.要检查您是否可以在不再位于内存中的视图控制器中实现deinit.

deinit {
  println("SomeViewController was deallocated")
}
Run Code Online (Sandbox Code Playgroud)

你可以尝试这个过渡动画

UIView.transitionWithView(self.window, duration: 0.5, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: {() -> Void in self.window.rootViewController = otherViewController}, completion: nil)
Run Code Online (Sandbox Code Playgroud)