gpt4 book ai didi

swift - 静态容器 View

转载 作者:行者123 更新时间:2023-11-30 10:13:49 25 4
gpt4 key购买 nike

我有 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com