Vue de table statique en dehors de UITableViewController


159

Après la nouvelle mise à jour de Xcode, mon application ne valide pas et affiche cette erreur:

les vues de table statiques ne sont valides que lorsqu'elles sont intégrées dans des instances UITableViewController

Des chances de résoudre facilement?


Dépend de la raison pour laquelle vous utilisez une sous-classe UIViewController au lieu d'un UITableViewController.
David Berry

3
Parce que j'ai besoin d'autres éléments dans la vue qui n'appartiennent pas à un UITableViewController
Francesco S

1
Vous rencontrez le même problème ici. Je viens de mettre à niveau (ou rétrogradé, comme il semble, jusqu'à présent) vers Xcode 5.1 et j'ai le même problème. J'ai un tas de cellules statiques dans une sous-classe UITableViewController à l'intérieur de mon UISplitViewController.
Stefan Arambasich

J'ai commencé à arriver pour moi aussi après la mise à niveau. J'ai des contrôleurs de vue construits avec des cellules statiques, ce n'est pas idéal mais cela fonctionnait bien avant.
jdmunro

Vous n'avez pas besoin d'utiliser UITableViewController. Vous obtenez cette erreur si vous avez des cellules de vue tableau statique dans votre UiTableView, donc je pense qu'une solution simple est que si vous avez besoin des cellules, ne les laissez pas statiques. Ajoutez simplement le délégué tableview et la source de données et les méthodes factices UITableViewDelegate
EarlySun

Réponses:


341

La seule façon d'obtenir un UITableView statique avec d'autres contrôles sur le même écran consiste à utiliser une vue de conteneur. Suivez cette voie, cela fonctionne parfaitement:

  1. Faites glisser un ViewController sur votre storyboard.
  2. Faites glisser un TableViewController sur votre storyboard.
  3. Ensuite, faites glisser une vue de conteneur vers votre ViewController et redimensionnez-la à la taille souhaitée (plus petite que la vue) -> lorsque vous faites glisser la vue de conteneur, elle crée une séquence et une autre vue. Supprimez cette séquence et cette vue.
  4. Puis enfin ctrl cliquez dans votre conteneur et faites glisser vers votre nouveau TableViewContoller. Sélectionnez Incorporer.
  5. Personnalisez votre tableau comme vous le souhaitez -> y compris les cellules statiques.

Bonne chance.

Cette réponse a déjà été trouvée et donnée ici: G.Huebner -> http://web.archive.org/web/20140928102504/http://iphonedevsdk.com/forum/iphone-sdk-development/111800-static-table- view-cells-only-work-in-a-uitableviewcontroller.html


Où prendre une sortie ou agir? Dans UIViewControllerou devrais-je avoir à prendre UITableViewController.
Bhavin Ramani

@Bhavin Ramani: Puisqu'il s'agit d'un UITableViewController dans le conteneur, je suggère de prendre exactement cette classe / sous-classe pour contenir vos IBOutlets.
LukeSideWalker

2
Je suppose que toute l'idée des "cellules statiques" est mise en œuvre d'une manière qui dépend de certaines fonctionnalités internes de UITableViewController.
Nicolas Miari

2
Merci pour ça. Peut confirmer que cela fonctionne dans Xcode 8.3.1.
Atharva Vaidya

Tout simplement génial! Je cherchais cette solution depuis un moment maintenant.
Jason Foglia

8

Un UITableView statique doit être dans un UITableViewController. Vous devrez donc placer la table dans UITableViewController, puis l'ajouter en tant que childView au MainViewController.

Vous pouvez vous référer à https://iphoneidoit.blogspot.in/2013/10/static-uitableview-in-uiviewcontroller.html


1
Il y avait de nombreuses façons de contourner ce problème auparavant (comme conserver la cellule), mais maintenant c'est une erreur malgré tout. Je pense que la question suggère s'il existe un moyen de supprimer l'erreur.
Matthew Knippen

Oui ça l'était. Malheureusement, j'ai fini par résoudre le problème en utilisant une table non statiqueView
Francesco S

1
Yikes. La quantité de retravail qu'il faudrait pour convertir en non statique en raison de tous les IBOutlets dans mon fichier de contrôleur de vue est trop, et l'OMI est inacceptable pour une mise à jour de rompre cela sans avertissement ou note de cela dans le journal des modifications ( ergo je suppose qu'il est toujours parfaitement valide sur papier d'avoir un UITableViewControlleravec des cellules statiques à l'intérieur de a UISplitViewContoller. J'ai contacté le support développeur d'Apple et je n'ai reçu qu'une réponse par e-mail générique pas si utile me reliant aux forums. Je suppose que je vais essayer et voir si quelqu'un d'autre a les mêmes problèmes après la mise à jour.
Stefan Arambasich

4

Je pense que ce que vous faites est que vous faites d'abord glisser le ViewController sur le storyboard, puis faites glisser le tableView sur le ViewController. De cette façon, vous ne pouvez pas utiliser les cellules du tableau statique. Au lieu de cela, vous auriez dû faire glisser le TableViewController sur le storyboard principal au lieu d'un ViewController, puis sélectionnez les cellules statiques. De cette façon, vous pouvez travailler sur des cellules statiques et utiliser n'importe quel élément sur des cellules statiques.


0

Eh bien, si vous utilisez vraiment une tableView statique, vous devriez envisager de tout copier / coller dans un ScrollView ou StackView.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.