swift - 静态容器 View

标签 swift uiviewcontroller container-view

我有 2 个 UIViewControllers,其中包含表:AB
点击 A 中表格中的一行即可转到 B。

AB 的每个 View 的底部,我有一个 ContainerView 指向相同的 UIViewControllerZ。我使用 Z 来显示横幅广告。我遇到的问题是每次我的 View 发生变化(从 ABBC)时, UIViewController Z 按应有的方式重新实例化。但这是我不想要的。我想在任何地方使用 ContainerView 的相同实例。我确实保持了我的广告横幅静态,因此它们在任何地方都是相同的,但仍然管理方向变化和横幅 View 变得困惑。当我切换 View 时,随着容器 View 实例的切换,它还会使广告横幅消失并重新出现。

有没有一种方法可以在我的所有 UIViewControllers AB 以及我的任何其他 View Controller 中保留整个 ContainerView 的相同实例添加?

最佳答案

有两种方法可以完成此任务。

第一种方法:意识到 A、B 和 C View Controller 应该位于容器中,而不是横幅添加 View Controller 。或者,创建一个带有两个容器的父 View Controller ——一个用于横幅广告,另一个用于 A、B 和 C Controller 。

第二种方法:当从 A 到 B 再到 C 时,只需传递此 View Controller 即可。您可以通过为它们提供一个共同的父级来极大地简化这一过程。

class BannerViewController { /* blah */ }

class BannerViewDisplayViewController {
    @IBOutlet var bannerView: UIView!
    var bannerViewController: BannerViewController! {
        didSet {
            bannerView = bannerViewController.view
            bannerViewController.didMoveToParentViewController(self)
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        if bannerViewController == nil {
            // instantiate a bannerViewController
        }
    }   

    override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
        if let destination = segue.destinationViewController as? BannerViewDisplayViewController {
            destination. bannerViewController = self. bannerViewController
        }
    }
}

关于swift - 静态容器 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31370755/

相关文章:

ios - NativeScript 将 UIViewController 传递给 native iOS 方法

iphone - 导航项未出现在 View Controller 上

iphone - 将导航 Controller 栏按钮与嵌入容器 View 进行交互

ios - Swift:如何设置在 CAKeyFrameAnimation 完成时发生的 Action

ios - 如何为在 iPad 上运行的 iPhone SwiftUI 应用程序锁定纵向方向?

ios - 访问嵌入在 UIViewController 中的 UITabBarController

ios - 按下按钮刷新容器 View

ios - 从 parentViewController 中隐藏或暂时删除子 ViewController?

ios - 如何从 swift(iOS) 重定向 Skype 应用程序

ios - WildCard在iOS关联域中不起作用(通用链接)