Attività di visualizzazione Indicatore in Table View, mentre i dati delle righe è essere recuperato

StackOverflow https://stackoverflow.com/questions/2650525

Domanda

sto navigando da tableview1.row ad un tableview2 che ha un sacco di righe di essere recuperata. Poiché il tempo di caricamento è circa 3 secondi, voglio la navigazione di diapositiva in tableview2 non appena viene selezionata la tableview1.row, e quindi visualizzare un UIActivityIndicatorView sopra tableview2 mentre i dati vengono recuperati e quindi resi in sua vista tabella sottostante. Nota, tableview2 è in realtà una visualizzazione secondaria del UIView genitore (in contrasto con il genitore di essere un UITableView).

Ho visto questo post: indicatore di attività deve essere visualizzato quando si naviga da UITableView1 a UITableView2

... che dà istruzioni per aggiungere l'inizio indicatore di attività e stopAnimating chiama intorno i dati recuperano in viewDidLoad di tableview2.

Il fatto è che io non sono sicuro di come la soluzione di cui sopra potrebbe funzionare come piste viewDidLoad e completa prima tableview2 visibilmente diapositive in vista.

Separatamente, ho anche provato ad aggiungere un indicatore di attività nel corso tableview2 in IB e ha aggiunto codice di animazione di avvio / arresto dell'indicatore IBOutlet in viewDidAppear. Ciò che accade è i dati recuperano piste e posso vedere l'indicatore di filatura, ma alla fine del fetch vista tabella è vuota. Sembra viewDidAppear è troppo tardi per aggiungere dati alla visualizzazione tabella come cellForRowAtIndexPath ecc ha già sparato.

Qualcuno può suggerire qualsiasi puntatori? Potrei benissimo essere manca qualcosa di ovvio qui (il suo quasi 05:00 dove sono e che il mio cervello è poltiglia). Dovrei ri-trigger cellForRowAtIndexPath ecc da viewDidAppear? È il problema che la mia vista della tabella è una visualizzazione secondaria e non la vista padre?

Grazie

È stato utile?

Soluzione

ho preso un altro sguardo alla mia domanda e la risposta è in realtà piuttosto semplice. Qualsiasi trattamento intensivo generalmente non deve essere eseguito sul thread principale. Stavo tentando di fare miei dati intensiva ricercare e visualizzare UI dell'indicatore attività sullo stesso filo e così questi erano trattati in sequenza, uno dopo l'altro.

soluzione è entrare mio nuovo controller di vista e calcio) fuori l'animazione indicatore di attività sul thread principale e poi b) eseguire i dati intensivi recuperano su un altro thread (usando performSelectorInBackground). Tutti gli aggiornamenti relativi dell'interfaccia utente non possono essere applicati dal thread in background. Questi dovrebbero essere di nuovo consegnato al thread principale.

Un sacco di messaggi così via Questo già (ad esempio qui ), il mio male per non far salire su queste dall'inizio:)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top