在第一个视图控制器中添加'addObserver'(NSNotificationCenter),在第二个
我看到了一些关于在同一个类中添加观察者和句柄的例子,但是我想知道的是,如果可以在第一个视图控制器中添加观察者并在第二个视图控制器中处理它,
我想不断地从第一个视图控制器发送距离,并在第二个处理它。 第二个视图控制器添加为子视图: addSubview
, addChildViewController
。
这是像在android广播。
对的,这是可能的。 NSNotificationCenter
正是以这种方式工作的。
首先,您将不得不在第一个视图控制器中注册监听器,如下所示。
-(void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(somethingHappens:) name:@"notificationName" object:nil]; } -(void)somethingHappens:(NSNotification*)notification { }
其次,从第二个视图控制器发布通知如下。
[[NSNotificationCenter defaultCenter] postNotificationName:@"notificationName" object:obj];
系统将通知所有听众。
还有另一种方法可以做到这一点(如果你想让其他视图控制器知道一个对象的值是否已经改变)。 您可以使用KVO(键值观测): http : //developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueObserving/Articles/KVOBasics.html