-1

通知センターの今日の拡張機能/ウィジェットでは、通知センターがアクティブになるたびに UI の一部を更新する必要があります。通知センターの使用中やバックグラウンドで更新する必要はありません。そのコードをどのメソッドに配置すればよいですか?

viewDidLoad両方ともviewWillAppear、表示されるたびに呼び出されます。たとえば、上下にスクロールすると、再度呼び出されるため、頻繁に呼び出されます。

widgetPerformUpdateWithCompletionHandler初めて表示される前に呼び出されることはまったくないようです (少なくとも iOS 8.2 ベータ版では)。このメソッドは、iOS がバックグラウンドにある場合でも UI を更新する必要があると感じるたびに自動的に呼び出されます。これも適切ではありません。

loadViewウィジェットがメモリから削除されない限り、一度だけ呼び出され、二度と呼び出されません。そのため、通知センターを開いてウィジェットを表示し、通知センターを閉じて後で再度開いた場合、メモリから消去されたかどうかによっては、そのメソッドが再度呼び出されない場合があります。

4

1 に答える 1

0

viewDidLoad複数の呼び出しの可能性について心配する必要はありません。メソッドの実行に時間がかからない限り、そのようにしない理由はありません。[そして、実行に時間がかかる場合は、今日の拡張機能がうまくいかないので、修正してください。]

何らかの理由で一度だけ発生させたい場合は、BOOLivar をクラスに追加します。に設定してからYESinitWithCoder:そのviewDidLoad値を確認します。の場合YESは、更新を行い、値を に設定しますNO。すでに の場合はNO、更新をスキップしてください。

于 2015-01-04T22:54:34.313 に答える