J'ai commencé un projet de détail de vanille avec Swift. Si j'ajoute un nouveau contrôleur de vue et définit la classe personnalisée, la liste des modules est vide et il n'est pas possible de choisir un module. Le message d'erreur "Classe inconnue dans le fichier Interface Builder." apparaît dans la console si je lance le code. Comment puis-je configurer le storyboard pour qu'il connaisse la classe et le module personnalisés?
Comment ça devrait être. Les deux classes du modèle sont très bien.
et comment c'est
Je dois ajouter customModule="Target_Name" customModuleProvider="target"
au code source du constructeur d'interface. C'est vraiment énervant!
Mise à jour: Si je déplace le répertoire du projet entier vers un autre, par exemple. au bureau cela fonctionne. On dirait que mon répertoire avec le nom "Repository" est cassé. Je ne sais pas pourquoi :(
J'ai rencontré un problème similaire lorsque j'ai remplacé la sous-classe UIViewController
du projet Xcode par défaut par une sous-classe de UITableViewController
. (J'ai apporté cette modification au fichier source de la classe, rien à voir avec Storyboard).
Je suis ensuite allé taper mon nouveau nom de classe dans le champ "Classe" de la "vue" par défaut de l'IB dans le Storyboard. Cela ne complèterait pas automatiquement le nom de ma classe, ce qui donnerait l'erreur Unknown class in Interface Builder file
lors de son exécution.
La solution consistait à supprimer l'objet UIViewController
par défaut du Storyboard, puis à ajouter une nouvelle UITableViewController
. Ensuite, définissez la classe de cet objet dans IB pour qu'elle soit votre classe personnalisée.
Il semble que la question initiale se pose, car la classe de la première capture d'écran est ...ViewController
et la seconde est ...TableViewController
.
J'avais le même problème, mais j'ai découvert que j'avais par inadvertance attribué une classe personnalisée non existante à l'objet vue géré par mon contrôleur de vue. Ainsi, dans la vue de document du storyboard, j'ai sélectionné l'objet de vue mal configuré, puis, dans l'inspecteur d'identité, supprimé la classe personnalisée incorrecte affichée pour celui-ci (en effectuant un retour arrière et en retournant). Cela a pris soin du problème.
Dans mon cas, la classe personnalisée doit être affectée au contrôleur de vue, et non à l'objet de vue géré par le contrôleur.