这是我的代码。
在ViewController中创建名为Example
的Notification的观察者
- (void)addObserverExample
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(example:)
name:@"Example"
object:nil];
}
- (void)example:(NSNotification *)notification{
NSLog(@"Example!!!");
}
从viewDidLoad
注册我的观察者
- (void)viewDidLoad
{
[self addObserverExample];
}
在我的第二个ViewController中。点击按钮执行此代码:
[[NSNotificationCenter defaultCenter] postNotificationName:@"Example" object:self.dictKeys userInfo:nil];
我的问题是通知从未执行。
任何想法。
答案 0 :(得分:0)
已根据您的问题为NSNotificationCenter创建了演示程序,对我来说效果很好。这是该代码的链接:NSNotificationCenter Demo
- (void)viewDidLoad {
[super viewDidLoad];
[self addObserverExample];
}
- (void)addObserverExample
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(example:)
name:@"Example"
object:nil];
}
- (void)example:(NSNotification *)notification{
NSLog(@"Example!!!");
NSLog(@"%@",notification.userInfo);
}
- (IBAction)btnFireNotification:(id)sender {
[[NSNotificationCenter defaultCenter] postNotificationName:@"Example" object:nil userInfo:@{@"key" : @"value"}];
}
答案 1 :(得分:0)
我相信您遇到的问题可能与以下事实有关:在第二个视图控制器中,您正在self.dictKeys
参数中传递object
。
如果要通过NSNotificationCenter
传递数据,则应改用userInfo
参数。
Darshan的例子可以正确地做到这一点。