我正在尝试将NSString从一个类传递到另一个类。让我们说我有ViewController A和ViewController B.我想将NSString从A传递给B.
在ViewController A中,我有以下代码:
[[NSNotificationCenter defaultCenter] postNotificationName:@"NotificationMessageEvent" object:userType];
//这里用户类型是我使用委托获得的字符串,我需要将此userType传递给ViewController B
在ViewController B中,我有以下代码: 在viewDidLoad中,我有以下代码:
[NSNotificationCenter defaultCenter]
addObserver:self selector:@selector(notificationAction:) name:@"NotificationMessageEvent" object:nil];
//此NSNotificationCenter方法称为
我已注册以下选择器方法。
-(void) notificationAction:(NSNotification *) notification
{
if ([notification.object isKindOfClass:[NSString class]])
{
NSString *message = [notification object];
// do stuff here with your message data
NSLog(@"%@ is message",message);
}
else
{
NSLog(@"Error, object not recognised.");
}
}
//永远不会调用上面的选择器方法。
我已阅读其他类似的stackoverflow答案,但我无法找到任何有关此问题的解决方案。
答案 0 :(得分:8)
您的代码和语法显然是正确的。我猜这是物体生命周期的问题。我假设以下任何一种都是正确的:
或
您可以验证其中任何一种方法的一种方法是添加两个断点,一个用于发布通知,另一个用于注册通知侦听器。应在发布通知之前命中监听器注册的断点。如果发生这种情况,那么在发布通知时确认ViewController B实际上是一个存在的对象(就像它没有从导航堆栈中弹出一样)。
答案 1 :(得分:-1)
这就是你要找的东西 NSNotification not being sent when postNotificationName: called 您必须在postNotificationName
之前添加addObserver[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationAction:) name:@"NotificationMessageEvent" object:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"NotificationMessageEvent" object:nil];