0

我有 2 个UIViewControllers包含 Tables:AB.
在 A 中点击表格中的一行会转到 B。

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

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

4

1 回答 1

1

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

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

第二种方法:当从 A 到 B 到 C 时,只需传递这个视图控制器。你可以通过给他们一个共同的父母来非常简化这一点。

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
        }
    }
}
于 2015-07-12T19:11:37.820 回答