让NSNotification工作?
问题描述:
我目前正试图让NSNotification工作,但我遇到了一些麻烦。让NSNotification工作?
我有两个(2)ViewControllers:A. MainViewController & B. LoginViewController。
在我的MainViewController我有一个注销按钮,将发送一个URL到我的LoginViewController加载它(不显示我的loginView)。但是,它不起作用。
在我MainViewController这就是我:
- (IBAction)logout:(id)sender {
NSURL *logoutURL = [NSURL URLWithString:@"https://myurl.com/logout"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"logoutInitiated" object:logoutURL];
}
这是我在我的LoginViewController:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
WebView.delegate = self;
WebView.scalesPageToFit = YES;
WebView.multipleTouchEnabled = YES;
loadCount = 0;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(submitLogout) name:@"logoutInitiated" object:nil];
}
- (IBAction)submitLogout:(NSNotification*)notification {
[WebView stopLoading];
NSURL * signOutUrl = (NSURL*)[notification object];
[self loadURL:nil withURL:signOutUrl];
}
我的问题是,当我按下logoutButton没有任何反应。 (使用NSLogs,我发现它从来没有触发下一步)谢谢!
答
这是因为您在选择器中传递的方法名称是错误的。您需要添加冒号:在submitLogout:
后缀 使用
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(submitLogout:) name:@"logoutInitiated" object:nil];
代替
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(submitLogout) name:@"logoutInitiated" object:nil];
希望它可以帮助你。
答
当您将自己添加为观察者时,可以使用不带分号的选择器“submitLogout”!但是你的方法有一个参数,所以正确的选择器是@selector(submitLogout:)
。
答
注意SEMICOLON
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(**submitLogout:**) name:@"logoutInitiated" object:nil];
- (IBAction)logout:(id)sender
{
NSURL *logoutURL = [NSURL URLWithString:@"https://myurl.com/logout"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"logoutInitiated" object:nil userInfo:[NSDictionary dictionaryWithObjectsAndKeys:logoutURL,@"RECEIVED_URL", nil]];
}
- (IBAction)submitLogout:(NSNotification*)notification
{
[WebView stopLoading];
NSURL * signOutUrl = (NSURL*)[notification objectForKey:@"RECEIVED_URL"];
[self loadURL:nil withURL:signOutUrl];
}
WOW我也许应该得到一些休息!我不敢相信我没有抓住这个!非常感谢!!! – KingPolygon 2013-05-08 06:38:45