gpt4 book ai didi

ios - 注销后如何重新加载 Root View Controller ?

转载 作者:行者123 更新时间:2023-11-30 13:09:35 27 4
gpt4 key购买 nike

根据苹果公司的说法,在应用程序的整个生命周期中,分割 View 应该始终是 Root View Controller 。

每当我注销帐户时,我能够重新加载详细 View Controller 数据的唯一方法是,如果用户注销,则使登录 Controller 成为 Root View Controller ,然后使吐出 View 成为 Root View 再次查看 Controller 。

这只是一个例子:

// if the user is not logged in
if FIRAuth.auth()?.currentUser?.uid == nil {
window?.rootViewController = UINavigationController(rootViewController: LoginController())
} else {
// If the user is logged in, show the main controller
window?.rootViewController = UINavigationController(rootViewController: MainController(collectionViewLayout: UICollectionViewFlowLayout()))
}

如果不执行上面的操作:如果我要注销,登录 View 将以模态方式呈现。如果我要登录到不同的帐户,然后以模态方式关闭登录 Controller ,则 Split View看起来仍然与上一个帐户相同。那么,有没有一种方法或技术可以让我在 Controller 中呈现带有动画的登录 Controller ,以便在重新登录时,分割 View 会更新?我想确保我遵循准则。

(注意:分割 View 中详细 View Controller 的根是 UICollectionViewController。我以编程方式完成所有这些操作。)

最佳答案

我通常有一个 rootViewController,它永远作为根。它的目的是保存并呈现登录名和主 Controller 。这样你总是有一个 rootViewController,它提供了在呈现的 Controller 之间切换的动态。

我个人更喜欢在演示之前重新分配登录 Controller 和主 Controller ,以确保最后登录的用户不会留下任何数据。

Example:

class rooViewController: UIViewController {

func presentedLogin() {
self.loginController = LoginController()
self.mainController.dismissViewControllerAnimated(true) {
self.presentViewController(self.loginController, animated: true, completion: nil)
}
}

func presentMainApplication() {
self.mainController = MainController()
self.loginController.dismissViewControllerAnimated(true) {
self.presentViewController(self.mainController, animated: true, completion: nil)
}
}
}


//App Delegate or any ether place of this application logic:

if FIRAuth.auth()?.currentUser?.uid == nil {
rootViewController.presentedLogin()
} else {
// If the user is logged in, show the main controller
rootViewController.presentMainApplication()
}

关于ios - 注销后如何重新加载 Root View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38881855/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com