Modifier un UIViewController en UITableViewController dans un storyboard?
J'ai vue dans mon storyboard que j'ai maintenant décidé que je serais plutôt d'affichage de ses données par l'intermédiaire statique des cellules de tableau.
Je ne peux pas utiliser des vues de table dans un UIViewController
(Static table views are only valid when embedded in UITableViewController instances
). Donc, j'ai besoin de convertir mon UIViewController
à un UITableViewController
en quelque sorte. J'ai changé la .h parent du fichier, mais qui n'a pas fait.
Est-il une autre façon d'obtenir ce que ça va? J'aimerais vraiment ne pas avoir à faire un nouveau VC dans le storyboard et tout déplacer, c'est une grande dispute.
source d'informationauteur Luke
Vous devez vous connecter pour publier un commentaire.
Si vous voulez que votre statique de la cellule d'affichage de tableau de ne pas prendre la totalité de l'écran, puis à l'aide d'un conteneur de vue est la meilleure façon d'aller. Commencez avec un UIViewController et faites glisser un conteneur de vue (à côté de la normale UIView dans la liste d'objets) dans son point de vue. Redimensionnez-le comme vous voulez -- le storyboard donnera automatiquement un point de vue contrôleur connecté à ce conteneur vue avec un embed segue. Supprimer le contrôleur, faites glisser une table view controller et à droite-glisser à partir du conteneur de vue de cette table view controller pour faire une nouvelle intégrer des enchaînements. Cette table view controller peut être consulté à partir de la UIViewController avec ses childViewControllers propriété (et à l'inverse, vous pouvez accéder à la UIViewController de la table view controller avec parentViewController si vous avez besoin).
Je vais ajouter à cela, puisque la question est sur la façon de modifier un UIViewController dans un UITableViewController, et étant donné que cette question est de plus d'un an et la réponse originale à cette question, bien que valides et peut ou peut ne pas avoir été la seule solution à l'époque, n'est pas réellement répondre à la question et n'est pas la seule solution.
Il EST possible pour ce faire, il vous suffit de configurer l'affichage de la table de délégué et de la source de données de points de vente dans de l'IB, et de modifier manuellement la table de montage séquentiel XML, ce qui semble effrayant, mais est en fait très facile.
D'abord, changer votre classe parent à un UITableViewController. UITableViewController déjà adopte le UITableViewDatasource et UITableViewDelegate protocoles, donc si votre classe n'est trop vous pouvez les supprimer:
Prochain, de créer de nouveaux référencement des points de vente sur votre UITableView pour sa source de données et à la délégation. La façon la plus simple de le faire est de glisser de la UITableView à lui-même. Le pop-up va vous donner la source de données et de déléguer des options.
Enfin, vous avez besoin de changer la table de montage séquentiel XML. Le storyboard fichier peut être assez grand assez rapide. La meilleure façon de trouver la scène que vous êtes à la recherche pour l'établissement de Storyboard Identificateur dans l'Identité de l'Inspecteur. Pour afficher directement le XML, cliquez du bouton droit sur la table de montage séquentiel du fichier dans l'explorateur de projets et sélectionnez "Ouvrir en tant Qu' -> Code Source". Maintenant, il suffit de chercher pour ce que vous définissez la réutilisation de l'identificateur plus tôt. Vous verrez quelque chose de similaire à ceci:
Tout ce que vous devez faire est de modifier l'ouverture et la fermeture view controller tags
être tableViewController au lieu
Que c'est! Pas besoin de créer un nouveau UITableViewController scène ou intégrer un UITableViewController dans un conteneur en vue.
EDIT:
Je dois également ajouter que la UITableView DOIT être la racine de la vue. Il ne peut pas être incorporé à l'intérieur d'une UIView.
Ce que j'ai fait, est la création d'un UITableViewController de l'IB, ouvrez la table de montage avec un éditeur de texte et copiez tous les nœuds à l'intérieur de la UIViewController à la UITableViewController.
Je pense qu'avec cette façon, il ya moins de risque de la suppression de quelque chose d'important.
Avant de copier les sections objets, assurez-vous que les deux tableviews (UIViewController et UITableViewController) ont les mêmes propriétés définies comme: statique ou dynamique des cellules, style (plaine ou groupés), etc.