【发布时间】:2017-01-04 14:20:11
【问题描述】:
我有一个 BaseController (BVC),我已经开始在 viewWillAppear 中收听通知,并在 viewWillDisappear 方法中停止收听它们。
BVC
- CustomView (Notification received updates this VC)
现在我已经从 BVC 子类化了 4 个不同的控制器。
BVC
|-- FirstVC (FVC)
|-- SecondVC (SVC)
|-- ThirdVC (TVC)
现在,我有一个 TarBarController,它通过 NavigationViewController (NVC) 将这 3 个 VC 作为其项目
TabBarController
|- NVC->FVC
|- NVC->SVC
|- NVC->TVC
我的问题是,我从作为 AVPlayer 实例的 Singleton 对象发送了 playWillBegin 通知。从顶部处于活动状态的 VC 收到通知,但如果我不快速切换选项卡,则其他控制器中不会收到通知。
我还在 SO 中读到,其他 VC 没有被实例化,这就是没有收到通知的原因。但我不能在 VC 中使用 init 方法,因为它要求我使用 initWithaCoder
我的项目都是代码,不使用故事板等。所以我的 TabBarController 是一个 swift 类,在 AppDelegate 中有项目和 TabBarController 实例
编辑 2:澄清为什么我无法在 VC 的 init() 方法中添加任何内容 BaseViewController - 片段
init() {
super.init() //Please refer image for error message
}
required init?(coder aDecoder: NSCoder) {
}
TabBarController
class TabBarController: UITabBarController, UITabBarControllerDelegate {
override func viewDidLoad() {
tabBar.tintColor = UIColor.whiteColor()
self.delegate = self
let FNVC = UINavigationController(rootViewController: FVC())
//Other initialization code
let SNVC = UINavigationController(rootViewController: SVC())
//Other initialization code
let TNVC = UINavigationController(rootViewController: TVC())
//Other initialization code
viewControllers = [FNVC, SNVC, TNVC]
}
}
【问题讨论】:
标签: ios objective-c swift nsnotificationcenter