web-dev-qa-db-fra.com

Vous voulez créer une interface utilisateur statique sympa mais: "Les vues de table statiques ne sont valides ..."

Je crée donc une vue comme:

enter image description here

Pour cela, j'essaie d'utiliser un Storyboard dans lequel j'ajoute 2 TableViews (à la fois en tant que `` cellules statiques ''), puis j'ajoute manuellement mon contenu Cell directement depuis le storyboard ...

Dans mon storyboard, ça a l'air super mais quand je construis, je reçois:

en.lproj/MainStoryboard.storyboard: erreur: configuration illégale: les vues de table statiques ne sont valides que lorsqu'elles sont incorporées dans des instances UITableViewController

Si vous avez des idées sur cette question.

Merci !

24
Cehm

Ajoutez un UITableViewController à votre vue. Il doit contenir un UITableView. Définissez-la comme une vue de table statique et regroupez-la. Ajoutez deux sections. Un avec une rangée et l'autre avec deux rangées. Ajoutez à nouveau vos boutons et curseurs d'étiquettes aux lignes.

Je ne sais pas pourquoi vous voudriez avoir deux UITableViews ici?

22
Øystein

J'ai également rencontré un problème lors de la modification d'un contrôleur de vue personnalisé existant, ce qui étend UITableViewController. XCode n'est pas assez intelligent et ne réalisera pas qu'il répond déjà à ses besoins.

Vous pouvez résoudre ce problème en modifiant le code source du storyboard et en modifiant <viewController ... à <tableViewController....

Source d'origine: https://plus.google.com/108665969482300807329/posts/J4mCASMA3pZ

34
juanignaciosl

La seule façon de faire fonctionner cela dans Xcode 6, et la façon dont Apple voulait que cela fonctionne est d'incorporer un TableViewController dans une vue de conteneur, si vous le devez. Il semble que vous ne pouvez pas pirater votre chemin à travers comme décrit par juanignaciosl, dans Xcode 6.

Les étapes seraient donc les suivantes:

  1. Créer un contrôleur de vue de table
  2. remplacez la vue de table dans ce contrôleur par la table de votre contrôleur de vue "problématique", avec toutes ses cellules statiques, etc.

Si votre vue de table fait partie d'une interface utilisateur plus complexe et que ce n'est pas la vue principale de votre contrôleur de vue, continuez comme ci-dessous

  1. créez un containerView dans votre contrôleur de vue "problématique", dans la même position que votre vue de table statique maintenant déplacée. Cela créera également automatiquement un autre viewcontroller et une séque - supprimez-les.
  2. faites un clic gauche faites glisser ou faites glisser ctrl de la vue du conteneur vers le tableviewcontroller qui contient votre table statique et choisissez embed

Ce n'est pas aussi agréable qu'avant, car votre vue de table est supprimée dans un contrôleur de vue séparé dans le générateur d'interface et cela peut avoir un impact sur votre code et vos points de vente existants. Mais pour les grandes tables statiques, c'est la meilleure alternative à la génération dynamique de tout le contenu.

4
Radu Simionescu

Vous pouvez le rendre dynamique puis passer du défilement:

[yourTableName setScrollEnabled:NO];
2
Ash Var