如何在App Delegate扩展中根视图控制器?

时间:2018-03-16 12:50:29

标签: ios swift

在appDelegate中更改Root View Controller时导航Push和Pop动画关闭的问题

如果我这样写下面代码它正在工作,但我的每个viewController push,present和pop动画关闭。 如何使用AppDelegate使用窗口对象?

AppDelegate扩展

extension AppDelegate {
func PresentLoginNavigationControllerScreen()-> Void {
    let mainStoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let initialViewController = mainStoryboard.instantiateInitialViewController()
    self.window?.rootViewController = initialViewController
    self.window?.makeKeyAndVisible()
}

func PresentHomeNavigationControllerScreen()-> Void
{
    let mainStoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let initialViewController = mainStoryboard.instantiateViewController(withIdentifier: "HomeNavigationController")
    self.window?.rootViewController = initialViewController
    self.window?.makeKeyAndVisible()
}
}

HomeViewController

@IBAction func LogoutButtonOnClick(_ sender: UIButton)
{
    if let appDelegate = UIApplication.shared.delegate! as? AppDelegate
        {
           appDelegate.PresentLoginNavigationControllerScreen()
        }
}

如果我更改了logout按钮,请点击appdelegate被调用的功能,然后更改为HomeViewControllerLoginViewController,然后导航将动画设置为禁用。我的任何屏幕都没有动画。但是我将再次申请Open然后开始工作。

  

请告诉我如何在appDelegate和重新启动应用程序中更改根视图控制器。

1 个答案:

答案 0 :(得分:0)

您可以像这样在转换块中切换rootViewController

UIView.transitionWithView(self.window, duration: 0.5, options: UIViewAnimationOptions.UIViewAnimationOptions.transitionFlipFromLeft, animations: {            
    self.window.rootViewController = newViewController
}, completion: { (finished: Bool) -> () in
    //Completion process
})

希望这会对你有所帮助。