我查看了Apple的文档并进行了大量搜索,但我找不到任何代码或具体解释如何执行此操作。
我想在用户打开特定的viewController时向窗口小部件发送数据,然后更新窗口小部件的视图以显示新数据。
我试过了:
我已经处理过更新窗口小部件中的视图,但是当我想要更新窗口小部件时(由于公司机密更改了一些值),这不会被调用:
- (void) widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler {
NSDictionary *data = [[SINGLETON sharedInstance] getData];
if(_data == nil && data == nil) {
_showData = NO;
completionHandler(NCUpdateResultNoData);
} else if(_data != nil && [_data isEqual:data]) {
_showData = YES;
completionHandler(NCUpdateResultNoData);
} else if(data == nil) {
_data = nil;
_showData = NO;
[self updateView];
completionHandler(NCUpdateResultNewData);
} else {
_data = data;
_showData = YES;
[self updateView];
completionHandler(NCUpdateResultNewData);
}
}
[self updateView]正在基于_showData更新小部件的视图(两个不同的视图,一个显示数据,一个没有任何数据)。
有人可以提供一个简单的代码示例(app和widget),介绍如何将数据发送到widget(来自主机app viewController)以及如何在发送/接收数据时更新widget的视图?
答案 0 :(得分:2)
您可以通过将数据存储在共享容器中来在应用和窗口小部件之间传递数据。然后,您的应用可以将数据写入该容器,您的小部件可以从那里读取数据。
例如,查看这个问题(问题和答案)。 Sharing data between an iOS 8 share extension and main app
或者您可以观看本教程。 https://www.youtube.com/watch?v=h3qUsjUMj74
ObjC教程(注意步骤#5及更进一步)。 http://www.glimsoft.com/06/28/ios-8-today-extension-tutorial/