2011-07-14 4 views
1

J'ai d'abord été chargé de créer un popover qui venait d'un BarButtonItem, puis d'après une sélection dans ce popover (qui était une vue de table), un autre popover se présenterait de la cellule avec les données . Les données que j'avais étaient correctement présentées de cette façon. Dans le débogueur, je vois toujours les données dans mon cellForRowAtIndexPath avec NSLog ce qui est dans le self.CategoriesArray. Pour quelque raison cependant, les données ne montreront pas ... maintenant cependant, ils ne veulent pas le popover initial, et juste un popover qui vient du BarButtonItem. Pour la vie de moi, je ne peux pas comprendre pourquoi mes données ne sont pas présentées puisque tout ce changement devrait être de remplacer le premier UITableView dans le popover, avec le second UITableView. À moins que je manque quelque chose ... Toute aide serait appréciée. Merci!Aide à déboguer UITableView, n'affiche aucune donnée

cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (tableView == _filterTableView || tableView == _categoriesTableView) { 

     static NSString *simpleIdentifier = @"SimpleIdentifier"; 
     UITableViewCell *simpleCell = [tableView dequeueReusableCellWithIdentifier:simpleIdentifier]; 
     if (simpleCell == nil) { 
      simpleCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleIdentifier]; 
     } 
     NSUInteger row; 
     row = [indexPath row]; 
     simpleCell.textLabel.textColor = [UIColor whiteColor]; 
     simpleCell.selectionStyle = UITableViewCellSelectionStyleNone; 

     // first popover 
     if (tableView == _filterTableView) { 
      simpleCell.textLabel.text = [_filterArray objectAtIndex:row]; 
      return simpleCell; 
     } 
     // second popover 
     else if (tableView == _categoriesTableView) { 
      simpleCell.textLabel.text = [_categoriesArray objectAtIndex:row]; 
return simpleCell; 
    } 

- (IBAction)FilterButtonPressed:(id)sender { 

      // This part works for two popovers 
//  UIViewController *contentViewController = [[UIViewController alloc] init]; 
//  self.FilterTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 200, 150) style:UITableViewStylePlain]; 
//  self.FilterTableView.delegate = self; 
//  self.FilterTableView.dataSource = self; 
//  self.FilterTableView.bounces = NO; 
//  self.FilterTableView.scrollEnabled = NO; 
//  self.FilterTableView.backgroundColor = [UIColor clearColor]; 
//  contentViewController.contentSizeForViewInPopover = CGSizeMake(200, 150); 
//  contentViewController.view = _filterTableView; 
//   
//  self.FilterPopoverController = [[UIPopoverController alloc] initWithContentViewController:contentViewController]; 
//  [self.FilterPopoverController presentPopoverFromBarButtonItem:_filterButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
//   
//  [contentViewController release]; 

     // New code tfor one popover 
     [self loadCategories]; 
     UIViewController *contentViewController = [[UIViewController alloc] init]; 
     self.CategoriesTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 500) style:UITableViewStylePlain]; 
     self.CategoriesTableView.delegate = self; 
     self.CategoriesTableView.dataSource = self; 
     self.CategoriesTableView.bounces = NO; 
     self.CategoriesTableView.scrollEnabled = YES; 
     self.CategoriesTableView.backgroundColor = [UIColor clearColor]; 
     contentViewController.contentSizeForViewInPopover = CGSizeMake(320, 500); 
     contentViewController.view = _categoriesTableView; 

     self.FilterPopoverController = [[UIPopoverController alloc] initWithContentViewController:contentViewController]; 
     self.FilterPopoverController.delegate = self; 
     [self.FilterPopoverController presentPopoverFromBarButtonItem:_filterButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];   
     [contentViewController release]; 

    } 
} 
+0

Chaque fois que j'ai un problème comme celui-ci, je vérifie d'abord que j'ai correctement connecté tout IB, puis je mets un point d'arrêt sur la méthode tableView pour m'assurer qu'il est au moins appelé. –

+0

Ouais c'est une bonne idée. Sauf pour un popover, je n'ai pas de point de vente. Il se présente simplement à partir du bouton. – Crystal

+0

duplication possible de [UITableViewDataSource, méthode -cellForRowAtIndexPath] (http://stackoverflow.com/questions/6702311/uitableviewdatasource-method-cellforrowatindexpath) – Crystal

Répondre

0

Je reconnais ce code de votre autre question. :) Vous définissez votre couleur de texte sur blanc et la couleur d'arrière-plan par défaut de la cellule est également blanche. Est-ce le même bug? Essayez de définir une couleur d'arrière-plan différente pour votre cellule.

Si cela ne résout pas, il y a une autre chose que vous pouvez vérifier. Vous définissez ceci:

contentViewController.view = _categoriesTableView; 

mais il n'est pas clair à partir de votre code d'où provient _categoriesTableView. Avez-vous @synthesize CategoriesTableView = _categoriesTableView; en haut de votre implémentation?

Définissez un point d'arrêt sur cette attribution de vue et assurez-vous que _categoriesTableView n'est pas nul.

+0

Oui, le @synthesize est présent. Le _categoriesTableView n'est pas nul avec un point d'arrêt. Je ne sais toujours pas ce qui se passe. – Crystal