web-dev-qa-db-fra.com

Storyboard "Main", mais n'a pas reçu UITableView lors de l'utilisation de UITableViewController

Je suis passé par ce tutoriel , "Option 2: Cellules prototypes" J'ai implémenté toutes les étapes, mais le code suivant me donne une erreur:

@interface MTViewController : UITableViewController

@end

le message d'erreur est:

contrôleur de vue instanciée avec l'identifiant "UIViewController-BYZ-38-t0r" du storyboard "Main", mais n'a pas obtenu de UITableView. '

Voici ce que j'ai essayé - j'ai changé UITableViewController en UIViewController et l'erreur est partie. Mais, la table reste vide. Pouvez-vous me dire pourquoi c'est?

18
Fred Shmed

Dans votre storyboard, vous devez définir la vue racine de votre UITableViewController en UITableView.

 Interface Builder Table View Controller

 Interface Builder Custom Class

42
Jarrod Smith

Essayez de changer votre super classe en UIViewController ou de changer le contrôleur de votre storyboard en TableauView

@interface MTViewController : UIViewController, UITableViewDataSource, UITableViewDelegate

@end
15
Bob

Faites glisser une nouvelle instance du contrôleur de vue de table dans votre scénario, copiez les cellules que vous avez créées dans votre contrôleur précédent dans la nouvelle.

Cette erreur s'est probablement produite parce que vous avez utilisé le UIViewController par défaut créé par XCode qui n'est pas un UITableViewController.

6
Babatunde Adeyemi

J'ai rencontré exactement le même problème que vous… .. Vous utilisez probablement un UIViewController au lieu d'un UITableViewController dans le storyboard. 

REMARQUE: Seule la sous-classe d'un UITableViewController personnalisé dans le storyboard ne suffit pas. Vous verrez la différence: différence entre UIViewController et UITableViewController

Vous devez donc faire glisser un UITableViewController de la bibliothèque, puis y déplacer toutes les cellules (cellules). N'oubliez pas de vérifier les liaisons et les mises en page automatiques si elles sont brisées.

Et bien sûr, vous ne pouvez pas déplacer la table à la racine de UIViewController, cela ne fonctionne tout simplement pas comme ça. =)

3
RockingDice

J'ai eu ce problème aussi. J'ai créé à l'origine tout à fait UIViewController puis j'ai décidé d'utiliser plutôt UITableViewController. Le problème est que j'ai oublié de définir l'ID de storyboard sur le nouveau contrôleur et de le remplacer par un autre élément de l'ancien contrôleur. Sinon, vous instancierez l'ancien contrôleur à partir du storyboard et le problème se produira.

3
luky

En fait, vous utilisez UIViewController et non pas UITableViewController. Supprimez votre contrôleur de vue par défaut et faites glisser le nouveau TableViewController dans votre storyboard. Parce que votre ViewController n'a pas TableView, mais essaie de charger des cellules.

La solution simple consiste à: Supprimer ViewController et ajouter TableViewController

Ensuite, vous devez changer le nom de sa classe en MTViewController ou Votre nom de classe

2
iOS

assurez-vous que la source de données est définie sur self.

0
Gontse Ranoto