静态容器视图

Static ContainerView

我有 2 个 UIViewControllers,其中包含表:AB
在 A 中点击 table 中的一行转到 B.

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

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

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

第一种方法:意识到应该在容器中的是您的 A、B 和 C 视图控制器,而不是横幅添加视图控制器。或者,制作一个包含两个容器的 parent 视图控制器——一个用于横幅广告,另一个用于 A、B 和 C 控制器。

第二种方法:当从 A 到 B 再到 C 时,简单地传递这个视图控制器。你可以通过给他们一个共同的 parent.

来非常简化这个
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
        }
    }
}