ios - 在 iOS 中用新的 Storyboard 替换当前的 Storyboard

标签 ios swift storyboard uikit

我正在构建一个应用程序,我决定在多个 Storyboard 文件中构建我的用户界面。每个 Storyboard 都是一组相似的 Action 。例如,LogInStoryboard 包含用于登录和注册用户的 View 。

我在导航到一个新的 Storyboard 并解散所有以前的 View Controller 以自行清理时遇到了一些问题。

这是我的数据流:

1) 应用启动进入登录 View 。 Root View Controller 是 LogInViewController,它位于 LogInStoryboard 中。

2) 用户点击注册按钮调用模态 RegistrationViewController,也存在于 LogInStoryboard 中。

3) 用户完成注册并自动登录。

此时, View Controller 堆栈是[LogInViewController, RegistrationViewController]。注册后,用户会自动登录,所以我想导航到他们的主屏幕 HomeViewController。但是,HomeViewController 位于另一个 Storyboard HomeStoryboard 中。

我想关闭 LogInViewControllerRegistrationViewController,然后我想从 HomeStoryboard 实例化 HomeViewController 和呈现它。这样我就有了一个简单的 View Controller 堆栈,并且 LogInStoryboard View Controller 都可以被释放。

实现这种流程的最佳方式是什么?或者我是否应该担心那些旧的 View Controller ?

最佳答案

通常情况下,您的登录流程几乎充当一个完全独立的应用程序,其唯一功能是对用户进行身份验证并将用户信息写入您的数据库。在这种情况下,当您完成登录而不是执行 segue 时,您要做的是用 HomeViewController 替换整个 View 层次结构。为此,您只需调用 UIApplication.shared.keyWindow! = UIStoryboard(name: "HomeStoryboard", bundle: nil).instantiateInitialViewController() (假设您将 HomeViewController 作为初始 View Controller )。当然这没有动画而且有点丑所以你想使用 UIView.transition(with:duration:options:animations:completion:)改为动画更改。示例:

    UIView.transition(with: UIApplication.shared.keyWindow!, duration: 0.25, options: .transitionCrossDissolve,
                      animations: {
                        UIApplication.shared.keyWindow!.rootViewController = UIStoryboard(name: "HomeStoryboard", bundle: nil).instantiateInitialViewController()
    })

关于ios - 在 iOS 中用新的 Storyboard 替换当前的 Storyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47493823/

相关文章:

ios - UIStackView : Change UIStackView image width using storyboard

ios - 在 Appdelegate 中设置 RootViewController

iphone - 关于 SQLite3 和更新 iPhone 应用程序的问题

ios - Swift Realm Write方法是Sync或Async Thread

ios - 无法解析格式字符串错误

ios - 快速从http请求中检索json数据

ios - 获取正确的 ViewController 实例以与委托(delegate)函数一起使用

swift - 如何访问错误的非本地化描述?

ios - dismissViewControllerAnimated 不会释放 viewcontroller

ios - Soundcloud 下载超时