Hoy Widget tableView se congela

Tengo un widget de hoy que contiene dos cosas:

  1. Un UILabel
  2. Un UITableView

En mi viewWillAppear configuré la label para que esté visible y mi tableView se oculta y puse el text de la label en "Loading". Vea la image abajo.

Luego obtengo una location y cuando esto se hace, invoco otro método y

  1. Si no encuentro ningún dato, simplemente actualizo el text de la label a "No encontré datos"
  2. De lo contrario, establezco que la label esté oculta y que el tableView esté visible y comienzo a actualizar los datos

Cuando esto se realiza con éxito, tengo un tableView que se ve así:

.

A mi problema ahora
Cuando abro mi widget de hoy y viewWillAppear , no siempre logro establecer mi label y el único resultado que obtengo es este

.

Entonces, lo que sucede es que solo puedo mostrar un poco de mi resultado anterior en el tableView.

Esto sucede ocasionalmente y parece que la tabla se congela y no soy capaz de actualizar la vista inicial, para ocultar la tablaView y mostrar la label en su lugar. Incluso cuando la pantalla se congela así, todo funciona como debería y consigo actualizar la tablaView y la vista.

El único problema es cuando abro el widget que la pantalla se congela así:

a veces en lugar de mostrar mi label. La razón por la que está en el tamaño tal como es, es porque establezco prefernetworkingContentSize = CGSizeMake(0, 30) . De lo contrario, apuesto a que habrá mostrado toda la tablaView anterior.

¿Alguna idea de cómo resolver esto para actualizar siempre la vista cuando viewWillAppear ?

Actualizar
Comenzar otra recompensa para ver si hay alguna otra input sobre este problema.

Lo que hace el sistema es que toma una instantánea. También he estado luchando un poco con este problema y he comprobado esta publicación, pero no solucionó mi problema.

Para el widgetPerformUpdateWithCompletionHandler hay tres opciones

  1. NCUpdateResultNewData : el nuevo contenido requirió que NCUpdateResultNewData a dibujar la vista.
  2. NCUpdateResultNoData : el widget no requiere actualización
  3. NCUpdateResultFailed : se produjo un error durante el process de actualización

No importa cuál de estos se llama, siempre es el mismo resultado. Y el sistema toma una instantánea.

Para ayudar a su widget a estar actualizado, el sistema ocasionalmente captura instantáneas de la vista de su widget. Cuando el widget vuelve a ser visible, se muestra la instantánea más reciente hasta que el sistema la reemplaza con una versión en vivo de la vista.

Para actualizar el estado de un widget antes de tomar una instantánea, asegúrese de cumplir con el protocolo NCWidgetProviding. Cuando su widget recibe el widgetPerformUpdateWithCompletionHandler: llame, actualice la vista de su widget con el contenido más reciente y llame al manejador de finalización, usando una de las siguientes constantes para describir el resultado de la actualización

Referencia .

Creo que tal vez intentemos cargar datos "pesados" y esto podría deberse a eso. Esta es mi respuesta, pero comencé una recompensa para comprobar si alguien más tiene otra respuesta o si está de acuerdo con mi publicación.