NSNotificationCenter不工作ios 7

时间:2014-02-01 09:34:37

标签: ios objective-c nsnotificationcenter

我正在尝试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;
}

1 个答案:

答案 0 :(得分:3)

如果您正在使用Interface Builder,那么initWithStyle:不会被调用为初始化程序,而是覆盖initWithCoder: