简而言之,我正在NSNotification
(在ClassA
中)注册以下viewDidLoad
监听器:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playSong) name:@"playNotification" object:nil];
我有在
ClassA.h
中声明的选择器:- (void)playSong:(NSNotification *) notification;
实现方式如下:
- (void)playSong:(NSNotification *) notification {
NSString *theTitle = [notification object];
NSLog(@"Play stuff", theTitle);
}
在
ClassB
中(在tableView:didSelectRowAtIndexPath:
方法中),我有:NSInteger row = [indexPath row];
NSString *stuff = [playlistArray objectAtIndex:row];
[[NSNotificationCenter defaultCenter] postNotificationName:@"playNotification" object:stuff];
所有这些都以一条错误消息结尾:
在调用
playSong
方法之前。有人可以帮我吗?从一个 Controller 向另一个 Controller 发布通知时,我会忘记什么?
最佳答案
如果要接受参数,您的@selector
需要一个:
字符:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playSong:) name:@"playNotification" object:nil];
ClassA
实例不响应playSong
选择器,但它们确实响应playSong:
选择器。