在父 UIViewController 中收到多个 NSNotifications

Multiple NSNotifications received in parent UIViewController

我有一个父 UIViewController BaseViewController 用于一些观点 :

class TestViewController: BaseViewController { ...

我想在 BaseViewController 中收到通知,所以我在 ViewWillAppear:

中添加了一个观察者
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(BaseViewController.receivedNotification(_:)), name:"NotificationIdentifier", object: nil)

我无法删除 ViewWillDisappear 上的观察者,因为通知是从呈现的 UIViewController 发送的,可以在每个 UIViewController 上与父 BaseViewController 一起呈现,所以 BaseViewController总是消失。

所以在浏览应用程序后,有不止一个观察者添加,我多次收到通知。

通知选择器只执行一次怎么办?或者如何在另一个 UIViewController 被推送时 .removeObserver(但在出现时不删除)?

I can't remove an observer on ViewWillDisappear because notification is sent from presented UIViewController that can be presented on every UIViewController that parent is BaseViewController so BaseViewController is always disappeared.

你绝对可以。将在屏幕上显示的每个新 ViewController 都有自己的实例,因此有自己的 BaseViewController 副本。事实上,目前只能出现 BaseViewController 的一个副本(如果我们谈论全屏视图控制器)

你可以很好地使用:

NSNotificationCenter.defaultCenter().removeObserver(observer: <The class from which you want to remove>, name: "Name of notification which you want to remove", object: nil)