我有2个UIViewControllers
,其中包含表:A
和B
。
在表格中点击A中的一行到B。
在A
和B
的每个视图的底部,我有一个ContainerView
,指向相同的UIViewController
说Z
。我使用Z
来展示横幅广告。我遇到的问题是,每次我的观看次数发生变化时(从A
到B
或B
再到C
),UIViewController
Z
都会重新开始 - 实例化它应该。但这是我不想要的。我想在任何地方使用相同的ContainerView实例。我确实让我的广告横幅保持静止,所以它们在各处都是一样的,但仍然管理方向变化和横幅视图变得混乱。此外,当我切换视图时,广告横幅消失并重新出现,因为容器视图实例已切换。
有没有办法可以在我的所有UIViewControllers ContainerView
和A
以及我添加的任何其他视图控制器中保留整个B
的相同实例?
答案 0 :(得分:1)
有两种方法可以完成这项任务。
第一种方法:意识到它是你的A,B和& C视图控制器应该在容器中而不是横幅添加视图控制器。可选地,制作具有两个容器的父视图控制器 - 一个用于横幅广告,另一个用于A,B和& C控制器。
第二种方法:当从A到B从C切换到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
}
}
}