Static ContainerView
У меня есть 2 UIViewControllers
которые содержат таблицы: A
а также B
,
Постукивание строки в таблице в A переходит к B.
Внизу каждого вида A
а также B
, У меня есть ContainerView
что указывает на то же самое UIViewController
сказать Z
, я использую Z
показывать рекламные баннеры. У меня есть проблема каждый раз, когда мое мнение меняется (от A
в B
или же B
в C
), UIViewController
Z
получает экземпляр как следует. Но это то, чего я не хочу. Я хочу использовать один и тот же экземпляр ContainerView везде. Я держал свои рекламные баннеры статичными, чтобы они везде были одинаковыми, но все же управление изменениями ориентации и просмотром баннеров становится беспорядочным. Также это заставляет рекламный баннер исчезать и снова появляться, когда я переключаю свое представление, поскольку экземпляр контейнера-представления переключается.
Есть ли способ, которым я могу сохранить один и тот же экземпляр всего ContainerView
во всех моих UIViewControllers A
а также B
а какие-нибудь другие viewcontrollers я добавлю?
1 ответ
Есть два подхода, которые решат эту задачу.
Первый подход. Поймите, что ваши контроллеры представления 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
}
}
}