iCulture forum | iPhone, iPad,  iPod touch, Apple TV en iOS

iCulture forum | iPhone, iPad, iPod touch, Apple TV en iOS (https://forum.iculture.nl/)
-   Ontwikkelen voor iOS (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/)
-   -   Wanneer data UITableView laden (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/87847-wanneer-data-uitableview-laden.html)

DJ14 29-03-11 20:55

Wanneer data UITableView laden
 
Hallo,

Ik heb een ViewController (vc1) die in een NavigationController zit. Als je op een button (b1) in vc1 drukt, wordt er middels pushViewController een nieuwe ViewController (vc2) met eigen .h en .m files op het scherm geduwd. vc2 bevat een UITableView, welke data van het web moet ophalen en weergeven. Nu heb ik in de viewDidLoad functie van vc2 neergezet dat er 1) een functie wordt uitgevoerd om de data van het internet op te halen en 2) de gevulde tableview wordt weergegeven nadat deze data is opgehaald. Nu als ik in vc1 op die button b1 druk, gebeurt er eerst een tijdje niets en wordt dan pas vc2 op het scherm geduwd met gevulde data. Dit komt omdat de data van het web wordt opgehaald in de viewDidLoad van vc2. Wat ik echter wil is dat vc2 direct met een lege tableview wordt weergeven na het drukken op b1, dat er dan pas de data wordt opgehaald van het internet (ook tijdens het lezen van de data een activity indicator weergeven), en dat vervolgens de tableview gevuld met de data wordt en de activity indicator stopt met animeren. Hoe moet ik dit implementeren? Waar en wanneer met de functie die data van internet ophaald worden neergezet/aangeroepen? En hoe /wanneer moet de tableview worden toegevoegd aan vc2?

Alvast bedankt.

JNikoy 29-03-11 22:08

Als je de code om de data op te halen in een aparte functie plaatst en deze vanuit de viewDidLoad in vc2 aanroept door middel van [self performSelectorInBackground:] wordt de data in de achtergrond ingeladen. Hierdoor blijft je applicatie gewoon reageren en krijg je gewoon direct vc2 te zien. Voordat de bovenstaande aanroept een activity indicator weergeven en erna uitzetten.

DJ14 30-03-11 14:52

Heel erg bedankt, weer wat geleerd :). Het werkt! Bovenaan de viewDidLoad staat nu self performSelectorInBackground, en verder staat er ook aan het eind van de functie die de data ophaalt: [self.tableView reloadData];

-edit- er moest ook nog een NSAutoReleasePool worden toegevoegd aan het begin van de void functie die de data van internet ophaalt, aan het eind van de functie moest die weer gereleased.


Alle tijden zijn GMT +2. Het is nu 10:45.