使用NSNotificationCenter从扩展小部件调用主应用程序中的方法?

时间:2015-04-12 15:51:37

标签: ios objective-c

我有一个小部件,我想回到我的主应用程序,以便调用服务器来更新数据。我查看了代表团,但是将小部件的视图控制器注册为代表并不是很实用。所以我继续尝试使用NSNotificationCenter。我已经设置了,但没有调用选择器。在我的主iOS应用程序中,我使用viewDidLoad方法。

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(loadNewData:)
                                                 name:kUpdateData
                                               object:nil];

在该文件的底部我有这个:

/**
 * Updates the table when the today widget is called for updated info
 **/
- (void)loadNewData:(NSNotification *) notification
{
    [self loadTableData];
}

我的主应用程序中的内容。现在,在我的通知中心小部件/扩展程序中,我打了这个电话:

[[NSNotificationCenter defaultCenter]
 postNotificationName:kUpdateData
 object:nil];

传入的postNotificationName,`kUpdateData',是一个解析为@" updateData"的常量。我可以在调试器中看到正在调用postNotificationName方法,但主应用程序没有响应它(无论它是在前台还是后台)。我究竟做错了什么?

作为旁注,我这样做的唯一原因是不需要重复代码并重新实现我已经做过的事情。

1 个答案:

答案 0 :(得分:0)

据我所知,扩展无法访问或调用主应用方法...可以做的是在扩展中执行服务器或在共享NSUserDefault中设置一个值,这样当你的应用程序被带到前台时你可以检查这个值并按照服务器连接。