Add 'addObserver' (NSNotificationCenter )

2019-02-17 03:00发布

This question already has an answer here:

I saw a few examples about adding observer and handle in the same class, but what I want to know is if it's possible to add observer in first view controller and handle it in second view controller?

I want constantly send distance from first view controller and handle it in the 2nd one. The 2nd view controller added as a sub view: addSubview, addChildViewController.

It's something like broadcast in android.

2条回答
该账号已被封号
2楼-- · 2019-02-17 03:45

Yes it is possible. NSNotificationCenter works exactly in that way.

Firstly, you will have to register the listener in the first view controller as below.

-(void)viewDidLoad
{
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(somethingHappens:) name:@"notificationName" object:nil];
}

-(void)somethingHappens:(NSNotification*)notification
{

}

Secondly, post the notification from the second view controller as below.

[[NSNotificationCenter defaultCenter] postNotificationName:@"notificationName" object:obj];

The system will broadcast the notification to all the listeners.

查看更多
爷、活的狠高调
3楼-- · 2019-02-17 03:56

There is another way to do this (in case you want to let other view controllers know if a value of an object has changed). You can use KVO (Key-Value Observing): http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueObserving/Articles/KVOBasics.html

查看更多
登录 后发表回答