我看到了一些关于在同一个类中添加观察者和句柄的例子,但我想知道是否可以在第一个视图控制器中添加观察者并在第二个视图控制器中处理它?
我想不断地从第一个视图控制器发送距离并在第二个视图控制器中处理它。作为子视图添加的第二个视图控制器:addSubview
, addChildViewController
.
这有点像android中的广播。
我看到了一些关于在同一个类中添加观察者和句柄的例子,但我想知道是否可以在第一个视图控制器中添加观察者并在第二个视图控制器中处理它?
我想不断地从第一个视图控制器发送距离并在第二个视图控制器中处理它。作为子视图添加的第二个视图控制器: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