私はAppleのマニュアルを見て多くを検索しましたが、これを行う方法に関するコードや具体的な説明は見つかりません。iOS 10の今日のウィジェット拡張機能をホストアプリケーションのデータで更新するには?
ユーザーが特定の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);
}
}
[自己updateView]は_showData(2つの異なるビュー、データ及びデータなしいずれかを示すもの)に基づいて、ウィジェットのビューを更新しています。
ウィジェットにデータを送信する方法(ホストアプリケーションのviewControllerから)と、データの送受信時にウィジェットのビューを更新する方法について、単純なコード例(appとwidgetの両方)を教えてもらえますか?
ありがとう!何らかの理由で、iOS 10の拡張機能でNSUserDefaults(グループ)を使用すべきではないと思ったので、YouTubeの映画は本当に役に立ちました。 – Otziii
YouTubeのビデオはもう利用できないようです。それをオンラインに戻すチャンスはありますか? – valeCocoa