【问题标题】:Hide / Show View Controller instead of Add / Remove to Parent隐藏/显示视图控制器而不是添加/删除到父级
【发布时间】:2022-07-17 18:23:56
【问题描述】:

我有一个视图控制器 A。在这个视图控制器中,我有一个按钮,点击该按钮会显示一个具有 webview 的视图控制器 B。

我想隐藏包含视图控制器 (B) 的 webview 而不是删除它,并且我想在生命周期内实例化这个 webview 一次。

基本上,我只想实例化一个视图控制器并希望隐藏(而不是删除)它,以便稍后我可以继续隐藏视图控制器的状态。

我怎样才能做到这一点?

【问题讨论】:

  • 视图控制器不可见;它的观点是。将控制器的主视图设置为隐藏。

标签: swift viewcontroller


【解决方案1】:

要求是->来自ViewController A,如果用户打开ViewController B,则将显示ViewController B,其中包含only一个webView。

一旦用户按下ViewController B 上的Save 按钮,ViewController B 将被关闭(即将从视图层次结构中删除)并且用户将导航回ViewController A

而那个时候我需要保存ViewController B,以便以后用户可以显示加载的WebView,而不是再次初始化ViewController B

解决方案:
我通过创建 String:ViewController 类型的静态字典(使用字符串作为键)解决了这个要求。稍后当我需要显示加载的 ViewController B 时,我可以在该静态字典中搜索,如果找到,则加载的 ViewController 可以显示给用户。

private var viewControllers: [String: UIViewController] = [:]
    
func addViewController(_ viewController: UIViewController, for key: String) {
    viewControllers[key] = viewController
}

func getViewController(for key: String) -> UIViewController? {
    viewControllers[key]
}

func deleteViewControllers() {
    viewControllers.removeAll()
}

我已经使用这三个功能来保存访问和删除ViewController B

【讨论】:

    猜你喜欢
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多