2010-06-06 5 views
0

J'ai un UITableViewController, quand il n'y a pas de données pour peupler l'UITableView, je veux ajouter un bouton, qui utilise une image. Ainsi, plutôt que de voir une tablevue sans enregistrements, l'utilisateur verra une image qui dit: «Aucun enregistrement n'a été ajouté, appuyez sur pour en ajouter un», puis ils cliquent et nous en créons un nouveau.iPhone: Ajouter un bouton d'arrière-plan pour voir quand UITableView n'a pas de cellules

Je supposais que je cacherais simplement UITableView, puis créer le bouton, mais je ne vois jamais le bouton. Ici j'utilise:

if ([[fetchedResultsController sections] count] == 0) { 
     self.tableView.hidden = YES; 
     // Create button w/ image 
     UIButton * btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     btn.frame = CGRectMake(0, 0, 100, 50); 
     [btn setImage:[UIImage imageNamed:@"no-rides.png"] forState:UIControlStateNormal]; 
     [self.view addSubview:btn]; 
    } 

Idées sur pourquoi je ne verrais jamais le bouton? Quand je montre cette vue, il semble avoir un arrière-plan transparent pendant une seconde, puis change de blanc ...

Répondre

1

Je ne sais pas si cela fonctionne, mais vous pouvez essayer ceci:

  1. Si votre contrôleur de vue n'est pas un UITableViewController et il contient un UITableView [self.tableView removeFromSuperview]; puis [self.view addSubview];

  2. Si votre contrôleur de vue est un UITableViewController, vous devrez peut-être envisager de définir la première ligne pour contenir l'image et le texte. Ensuite, vous pouvez gérer l'événement: tableView:didSelectRowAtIndexPath: et si l'utilisateur clique sur la première cellule, vous déclencher la méthode gérer l'événement bouton

+0

Ok, j'ai essayé pas cacher mon tableView, et je vois que mon image devient créer à l'intérieur cellule 0. Est-ce que cela signifie que mon contrôleur de vue est le tableviewcontroller? Je ne suis pas sûr de vouloir le conserver dans cette cellule et de le personnaliser, car je ne veux pas que le bouton défile. –

+0

Votre classe hérite-t-elle de UITableViewController ou de UIViewController? Si de UITableViewController, c'est un UITableViewController – vodkhang

+0

UITableViewController –

1

Dans un UITableViewController, self.view pourrait être self.tableView auquel cas cacher la table cacherait aussi le bouton . Essayez d'utiliser un UIViewController personnalisé et de créer la table ou le bouton sous la forme d'une sous-vue de self.view à la place.

Alternativement, lorsqu'il n'y a pas de données, vous pouvez créer une seule cellule personnalisée contenant votre bouton et l'utiliser à la place des cellules normales.

0

Je crois que vous pouvez ajouter le bouton au pied de page de table, comme le pied de table montré même quand il n'y a pas de cellules. (Remarque: ceci est différent d'un pied de section.) Par défaut, la propriété tableFooterView du UITableView est nil. Il suffit donc de créer votre bouton, puis faire:

self.tableView.tableFooterview = btn; 
0

Pour tous les futurs voyageurs, je simplement mis .userInteraction = true (Swift) et cela a fonctionné comme un charme. Dans l'ensemble:

tableView.backgroundView = constructMyViewWithButtons() 
tableView.backgroundView!.userInteraction = true 
Questions connexes