UITableview dans UITableviewcontroller - cellforrowatindexpath pas appelé sur reload

Je suis coincé dans un stupide problème depuis deux jours. J'ai un UITableViewController poussé dans Navigation Controller. Quand il charge, car il n'y a pas de données, afin de vider le tableau est visible:

UITableview dans UITableviewcontroller - cellforrowatindexpath pas appelé sur reload

Mais quand je reçois des données à partir du serveur, et de les appeler [self.tableView reloadData], à la fois numberOfRowsInSection et heightForRowAtIndexPath obtenir invoquer l'exception cellForRowAtIndexPath et mon contrôleur est montré sans table:

UITableview dans UITableviewcontroller - cellforrowatindexpath pas appelé sur reload

Je ne peux pas vraiment comprendre pourquoi cela se produit. Tous les source de données méthodes sont appelées à l'exception de cellForRowAtIndexPath. Il vous plaît quelqu'un me guider... Merci..

ActLogController.h

@interface ActLogController : UITableViewController<ASIHTTPRequestDelegate,UITableViewDataSource,UITableViewDelegate>

@property(strong) NSMutableArray *activityKeys;

@end

ActLogController.m

- (void)viewDidLoad
{
[super viewDidLoad];
activityKeys = [[NSMutableArray alloc] init];
self.tableView.dataSource = self;
}
-(void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self retrieveActivityLogFromServer];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return activityKeys.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
//Configure the cell...
ActivityLogUnit *act = [activityKeys objectAtIndex:indexPath.row];
cell.textLabel.text = act.price;
return cell;
}
-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 50.0;
}
-(void) requestFinished:(ASIHTTPRequest *)request
{
NSArray *list = [request.responseString JSONValue];
for (int i = 0; i < list.count; i++) {
NSArray *singleTrade = [[list objectAtIndex:i] JSONValue];
ActivityLogUnit *unit = [[ActivityLogUnit alloc] init];
unit.symbol = [singleTrade objectAtIndex:0];
unit.type = [singleTrade objectAtIndex:1];
unit.price = [singleTrade objectAtIndex:2];
unit.volTraded = [singleTrade objectAtIndex:3];
unit.remVol = [singleTrade objectAtIndex:4];
unit.actualVol = [singleTrade objectAtIndex:5];
unit.recordID = [singleTrade objectAtIndex:6];
unit.orderNo = [singleTrade objectAtIndex:7];
unit.time = [singleTrade objectAtIndex:8];
[activityKeys addObject:unit];
}
if(activityKeys.count > 0)
{
[self.tableView reloadData];//it is called and I have got 6 items confirm
}
}

MODIFIER

J'ai mis une certaine mannequin de données dans mon tableau activityKeys, les Données sont affichées dans le tableau, et cellforrowatindexpath est appelé avec succès. Mais comme je l'ai récupérer les données après un certain temps, d'autres méthodes sont appelées à l'exception de celle de table et disparaît, comme indiqué dans la 2e pic. Des idées?

Avez-vous connecté IBOutlet pour tableView ?
Journal activityKeys.le comte de numberOfRowsInSection pour voir de quoi il en retourne.
Je n'ai pas de fichier xib pour mon tableviewcontroller.
son retour 6. Étonnamment heightForRowAtIndexPath est appelé 6 fois, mais cellforrow.. au temps zéro.
C'est très curieux, je ne peux pas penser à une raison quelconque que cellForRowAtIndexPAth ne serait pas appelé aussi longtemps que numberOfRowsInSection renvoie un nombre supérieur à 0. Vous pouvez poster votre projet quelque part?

OriginalL'auteur NightFury | 2013-07-12