gpt4 book ai didi

ios - 打破 UINavigationController

转载 作者:搜寻专家 更新时间:2023-11-01 06:02:18 28 4
gpt4 key购买 nike

我有一个 Storyboard指定用于登录我的应用程序。我将其嵌入到 UINavigationController 中。登录到我的应用程序(并过渡到新的 Storyboard)后,我想“脱离”这个导航 Controller (即,在我登录后,我不再希望能够返回到登录屏幕)。我想用另一个 Navigation Controller 替换 Navigation Controller - 一旦达到这一点,我根本不想使用 Navigation Controller。

如何处理这个问题最好?谢谢!

仅供引用:使用 Swift 3

最佳答案

我在我的应用程序中这样做的方法是为身份验证部分设置一个导航 Controller ,然后为主应用程序设置另一个导航 Controller 。

因此,一旦我的用户登录后,我将用新的导航 Controller 替换 Root View Controller ,并将初始 VC 设置为显示:

APIClient.authenticate(username, password) { result in 
if result, let appDelegate = UIApplication.delegate as? AppDelegate {]
let mainNav = MainNavigationController()
let mainVC = MainViewController()
mainNav.setViewControllers([mainNav])
appDelegate.window?.rootViewController = mainNav
}
}

然后您的 AuthNavigation Controller 将被取消初始化,用户将无法导航回应用程序的身份验证部分。

这种方法有效地重置了您的 View 层次结构。当您通过身份验证流程时,您会将项目推送到导航堆栈中。

一旦您的身份验证流程完成,最有效的方法就是创建一个新的导航堆栈并以此替换根 Controller 。然后,旧堆栈中的所有 VC 都将被取消初始化并从内存中删除,您的新导航堆栈将一无所知。将您的新导航和主应用 View Controller 放在它的顶层,这就是您想要的。

关于ios - 打破 UINavigationController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46027874/

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