我正在尝试NSNotificationCenter的各种示例,但它们都没有工作。我有一个UITableViewController,当用户单击一个单元格时,它会打开一个包含WebView的UIViewController。为了让球滚动,我试图让UITableViewController记录一条消息,当它加载了带有WebView的UIViewController时它收到了通知。这就是我所拥有的:
在MyTableViewController中 -
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(receiveTestNotification:)
name:@"TestNotification"
object:nil];
}
return self;
}
- (void) receiveTestNotification:(NSNotification *) notification
{
if ([[notification name] isEqualToString:@"TestNotification"]) {
NSLog (@"Successfully received the test notification!");
}
}
- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
然后在我的UIViewController中有一个webview,我有 -
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter]
postNotificationName:@"TestNotification"
object:self];
....
}
当我运行并触摸UITableviewController中的单元格以使用WebView打开UIViewController时,没有日志消息。没有崩溃,没有什么。是什么赋予了?
非常感谢任何帮助。
修改 的
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self)
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(receiveTestNotification:)
name:@"TestNotification:"
object:nil];
}
return self;
}
答案 0 :(得分:3)
如果您正在使用Interface Builder,那么initWithStyle:不会被调用为初始化程序,而是覆盖initWithCoder: