【发布时间】:2015-04-12 15:51:37
【问题描述】:
我有一个小部件,我想回调到我的主应用程序,以便调用服务器来更新数据。我研究了委托,但将小部件的视图控制器注册为委托似乎不太实用。所以我继续尝试使用 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 方法,但主应用程序没有响应它(不管它是在前台还是后台)。我究竟做错了什么?
作为旁注,我这样做的唯一原因是消除对重复代码和重新实现我已经制作的东西的需要。
【问题讨论】:
标签: ios objective-c