首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSNotification不工作

NSNotification不工作
EN

Stack Overflow用户
提问于 2012-11-24 23:12:38
回答 2查看 1.2K关注 0票数 0

我一直在尝试让NSNotification正常工作。作为测试,我想要一个使用storyBoards加载新viewController的按钮。当你点击按钮时,它应该触发一个通知,让appObserver在第二个ViewController (我已经命名为Page2)中拾取。在Page2中,NSNotificationCenter应该启动一个方法(myMethod:)并打印出一个简单的NSLog。不幸的是,它不能工作,因为myMethod没有被调用。我做错了什么?

代码语言:javascript
复制
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (IBAction)goToPage2Button:(id)sender {

    [[NSNotificationCenter defaultCenter] postNotificationName:@"test" object:nil];

}

#import "Page2.h"

@interface Page2 ()

@end


@implementation Page2

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
       [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(myMethod:) name:@"test" object:nil];


    }
    return self;
}

-(void)myMethod:(NSNotification *)notification{


    if ([[notification name] isEqualToString:@"test"])
        NSLog (@"Successfully received the test notification!");


}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-24 23:19:06

我认为这可能是因为当通知被触发时,您的page2视图控制器不存在。

第二个视图控制器在从nib唤醒时注册观察,但是如果它还没有创建,那么它就没有注册第一个视图控制器正在发送的通知。

您应该做的是使用segues根据操作加载视图控制器。

票数 1
EN

Stack Overflow用户

发布于 2012-11-24 23:29:54

使用情节提要时,通常不会调用initWithNibName。它使用initWithCoder。您确定您正在执行添加您的观察者的代码行吗?

如果您曾经得到看起来某行代码没有被调用的行为,最好在那里放置一个断点或一个NSLog,并确认它确实被调用了。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13542492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档