6

Sono in mezzo con lo sviluppo del mio widget. Come abbiamo già inserito la nostra app con integrazione di widget. Ma al giorno d'oggi, sto affrontando un problema con il widget di oggi in iOS. Ho scritto un codice per due casi. La prima volta che il widget viene inizialmente caricato per la prima volta con l'avvio dell'applicazione, chiama il servizio Web e recupera i dati su Internet, quindi li memorizziamo nell'utente predefinito per un utilizzo successivo.Messaggio "Impossibile caricare" nel widget di oggi

Ora, quando la prossima volta, l'utente abbassa il menu di notifica, noi mostriamo il nostro vecchio contenuto salvato prima all'utente e poi lo recuperiamo dal servizio web e lo memorizziamo in default dell'utente e quindi ricarichiamo la tabella ancora una volta.

Per l'operazione precedente, sto affrontando un problema di dimensioni del contenuto per problemi di tabella, sfarfallio e "impossibile caricare" in alcuni casi.

Ora guarda il codice seguente, sto effettuando una chiamata web sotto il metodo e dopo la risposta del servizio web, gestisco semplicemente il gestore di completamento.

- (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler { 
    // Perform any setup necessary in order to update the view. 
    // If an error is encountered, use NCUpdateResultFailed 
    // If there's no update required, use NCUpdateResultNoData 
    // If there's an update, use NCUpdateResultNewData 
    [self getBookedAppointmentsNew:completionHandler]; 
} 

Quindi, per favore condividi la tua esperienza e le idee con me.

+0

Giusto per essere chiari, stai chiamando il tuo servizio web e non chiami il gestore di completamento fino al termine di tale chiamata? –

+0

Sì, faccio la stessa cosa .. chiamo web-service e al completamento del servizio, lo completo con il gestore di completamento. –

+0

In realtà, ho bisogno di effettuare una chiamata al servizio web ogni volta per recuperare i miei ultimi eventi per i clienti, ma fino a quando li prelevo provo a mostrare i dati recuperati in precedenza ai clienti. Quindi, non c'è possibilità di sfarfallio dello schermo. Voglio aggiornare la vista con nuovi contenuti senza effetti collaterali. –

risposta

2

Finalmente ho trovato il modo di risolvere il problema. Si prega di dare un'occhiata al codice qui sotto.

Nel metodo viewDidLoad(), ho appena impostato la dimensione del contenuto preferita della vista sull'altezza di base di cui ho bisogno all'avvio per mostrare la mia vista dal basso e quindi ho effettuato una chiamata al servizio web per recuperare i dati. Dopo aver recuperato i dati, ho nuovamente impostato la dimensione del contenuto preferita della vista TodayWidget.

-(void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     self.bottomView.frame = CGRectMake(self.bottomView.frame.origin.x, 0.0, self.bottomView.frame.size.width, self.bottomView.frame.size.height); 
     self.preferredContentSize = CGSizeMake(self.view.frame.size.width, self.bottomView.frame.size.height); 
     [self getBookedAppointmentsNew]; 
    } 

-(void)getBookedAppointmentsNew 
    { 
     //-- After web-service response (positive/negative), I have set again the preferred content size. 
     self.bottomView.frame = CGRectMake(self.bottomView.frame.origin.x, self.scrollView.frame.size.height, self.bottomView.frame.size.width, self.bottomView.frame.size.height); 
     self.preferredContentSize = CGSizeMake(self.view.frame.size.width, (self.bottomView.frame.origin.y + self.bottomView.frame.size.height)); 
    } 

Ho seguito i passaggi precedenti per risolvere i problemi in materia di "Impossibile caricare" & "sfarfallio dello schermo" con l'estensione Today.

+0

Ottimo approccio, l'obiettivo per me era "self.view.frame.size.width" –

4

In generale, ho visto il messaggio "Impossibile caricare" ogni volta che si verificava un arresto anomalo nel widget. Il widget tenta di caricarsi da solo e, se si blocca ripetutamente, mostrerà solo il messaggio "Impossibile caricare". Esegui il debug del tuo widget e assicurati che nulla lo stia causando l'arresto anomalo

+3

Ho risolto i problemi nel widget ma mostrava ancora "Impossibile caricare". Si scopre che iOS non ha nemmeno provato a caricare il widget se si è schiantato abbastanza volte. Ho dovuto riavviare il telefono e poi caricato. Grazie per il consiglio! – user3099609

Problemi correlati