今天如何使用主机应用程序中的数据更新iOS 10窗口小部件扩展



我看过苹果的文档并搜索了很多,但是我找不到有关如何执行此操作的任何代码或特定说明。

用户打开特定的ViewController,然后更新窗口小部件的视图以显示新数据时,我想将数据发送到小部件。

我尝试过:

  1. 添加通知。(从应用程序发布时,没有用小部件代码发射)
  2. 在应用程序中具有单身对象并更新属性,并从小部件获取数据。(这部分有效,但小部件永远不会更新)

我已经处理了更新小部件中的视图,但是当我想更新小部件时,这不是调用的(由于公司秘密而更改了一些值):

- (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更新小部件的视图(两个不同的视图,一个显示数据,一个没有任何数据)。

有人可以为我提供一个简单的代码示例(应用程序和窗口小部件),介绍如何将数据发送到widget(来自主机应用程序查看器),以及当发送/接收到数据时如何更新widget的视图?

您可以通过在共享容器中存储数据来传递应用程序和小部件之间的数据。然后,您的应用程序可以将数据写入该容器,而您的小部件可以从那里读取它。

例如,查看此问题(问题和答案)。共享iOS 8共享扩展名和主应用之间的数据

,也可以观看本教程。https://www.youtube.com/watch?v=h3qusjumj74

objc教程(请注意步骤#5及更高)。http://www.glimsoft.com/06/28/ios-8-today-extension-tutorial/

最新更新