为了简短起见,我在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
方法之前。
有人可以帮帮我吗?从一个控制器向另一个控制器发布通知时我忘记了什么?
答案 0 :(得分:41)
如果要提出争论,您的@selector
需要一个:
字符:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playSong:) name:@"playNotification" object:nil];
ClassA
做不的实例会回复playSong
选择器,但他们做会回复playSong:
选择器。