如何在NSNotification中传递userInfo?

时间:2010-10-05 07:07:22

标签: iphone cocoa cocoa-touch

我正在尝试使用NSNotification发送一些数据但是卡住了。这是我的代码:

// Posting Notification
NSDictionary *orientationData;
if(iFromInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
    orientationData = [NSDictionary dictionaryWithObject:@"Right"
                                                  forKey:@"Orientation"];
}

NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter postNotificationName:@"Abhinav"
                                  object:nil
                                userInfo:orientationData];

// Adding observer
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(orientationChanged)
                                             name:@"Abhinav"
                                           object:nil];

现在如何在我的选择器 orientationChanged 中获取此userInfo字典?

4 个答案:

答案 0 :(得分:92)

您获得了传递给您的函数的NSNotification对象。这包括您提供给NSNotificationCenter的名称,对象和用户信息。

- (void)orientationChanged:(NSNotification *)notification
{
    NSDictionary *dict = [notification userInfo];
}

答案 1 :(得分:23)

您的选择器必须:才能接受参数 e.g。

@selector(orientationChanged:)

然后在方法声明中它可以接受NSNotification参数。

答案 2 :(得分:6)

您正在正确发布通知。 请修改通知观察器,如下所示。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:)
 name:@"Abhinav" object:nil];

- (void)orientationChanged:(NSNotification *)notification
{
    NSDictionary *dict = [notification userInfo];
}

我希望,这个解决方案对你有用..

答案 3 :(得分:0)

迅速 获取userinfo对象

     let dict = notification.userInfo
     print(dict)