web-dev-qa-db-fra.com

UITableView avec des cellules statiques n'apparaît pas

J'ai créé un nouveau projet Xcode à l'aide de Storyboards (modèle de vue d'onglet). J'ai ajouté quelques contrôleurs de vue à mon storyboard et je voulais utiliser un UITableView avec des cellules statiques pour un. Je l'ai créé, mais lorsque je lance dans le simulateur, les cellules n'apparaissent pas. Je n'ai rien changé dans le projet à l'exception de ce fichier de storyboard. Je montre des captures d'écran de l'éditeur de storyboard et du simulateur en cours d'exécution. L'étiquette apparaît, donc la vue se charge correctement. J'ai défini la couleur d'arrière-plan sur gris pour que je puisse voir le talbeview en cours de chargement. Toutes les cellules sont définies comme visibles. J'ai changé leur style en Basic et édité l'étiquette, et ajouté un indicateur de divulgation, c'est tout.

simulatorxcode

63
adum

Voulez-vous essayer d'utiliser le TableViewController plutôt que le contrôleur Generic View?

34
Dennis Mathews

N'implémentez aucune des méthodes ci-dessous lorsque vous utilisez la vue de table statique:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
}
202
Joe Y

Comme indiqué sur le site Web de Ray Wenderlich (dans cet article: Début des storyboards dans iOS 5 partie 2 , section "L'écran Ajouter un lecteur au travail"):

Une dernière chose à propos des cellules statiques, elles ne fonctionnent que dans UITableViewController. L'éditeur de storyboard vous permettra de les ajouter à un objet Table View dans un UIViewController normal, mais cela ne fonctionnera pas pendant l'exécution. La raison en est que UITableViewController fournit un peu de magie supplémentaire pour prendre soin de la source de données pour les cellules statiques. Xcode vous empêche même de compiler un tel projet avec le message d'erreur: "Configuration illégale: les vues de table statiques ne sont valides que lorsqu'elles sont incorporées dans des instances UITableViewController".

Eu le même problème mais cela rend les choses claires ...

102
EeKay

Vous pouvez ajouter une vue de conteneur et incorporer un UITableViewController dans ce conteneur. Ensuite, vous pouvez gérer vos cellules statiques à l'intérieur du nouveau contrôleur.

11
zqy

Je rencontrais le même problème et le correctif qui a fonctionné pour moi était de présenter la sous-classe statique UITableViewController à l'aide de performSegue. Présentation de la ancienne méthode avec [[self navigationController] present...] n'a pas entraîné le chargement correct de ses cellules dans la vue statique de la table.

1
dave