0

我查看了 Apple 的文档并进行了很多搜索,但找不到任何代码或有关如何执行此操作的具体说明。

我想在用户打开特定的 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 更新小部件的视图(两个不同的视图,一个显示数据,一个没有任何数据)。

有人可以为我提供一个简单的代码示例(应用程序和小部件),说明如何将数据发送到小部件(从主机应用程序 viewController)以及如何在发送/接收数据时更新小部件的视图?

4

1 回答 1

2

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

例如查看这个问题(问题和答案)。 在 iOS 8 共享扩展程序和主应用程序之间共享数据

或者您可以观看本教程。 https://www.youtube.com/watch?v=h3qUsjUMj74

ObjC 教程(注意第 5 步及更多)。 http://www.glimsoft.com/06/28/ios-8-today-extension-tutorial/

于 2016-12-14T16:51:29.877 回答