【发布时间】:2019-08-28 10:51:11
【问题描述】:
在示例中:在A vc 我添加了观察者:
NotificationCenter.default.addObserver(self, selector: #selector(onDidReceive(_:)), name: .didReceive, object: nil)
当我在B vc 中时,我可以删除A vc 中的观察者吗?
我试过这个(B vc):
NotificationCenter.default.removeObserver(self)
但是没用
有可能吗?或者我必须在我创建的同一个 VC 中删除观察者?
【问题讨论】:
-
selfin B is B,因此它永远无法删除 A。您需要将 A vc 实例存储在某处,然后调用.removeObserver(aInstance) -
在 BVC 中,
self不是 AVC 实例。在viewDidAppear()中做addObserver()和在viewDidDisappear()中的removeObserver()怎么样? -
@Larme 也许他不想删除
AVC的viewDidDisappear中的观察者,并希望在执行某些操作后从BVC中删除观察者 -
@Gereon 类似这样的东西(在 B VC 中):
let main = UIStoryboard(name: "A", bundle: nil) let viewcontroller = main.instantiateViewController(withIdentifier: "AVC") NotificationCenter.default.removeObserver(viewcontroller)? -
@alexking 否。您正在创建
AVC的新实例。您应该获得AVC的现有实例
标签: swift