web-dev-qa-db-fra.com

Erreur WatchKit - impossible de trouver la classe de contrôleur d'interface '' à instancier

Chaque fois que je crée des connexions dans ma sous-classe de WKIInterfaceController, l'erreur WatchKit error - unable to find interface controller class 'myClass' to instantiate et un indicateur d'activité s'affichent dans le simulateur et l'affichage ne se charge pas. Déconnectez toutes les connexions et la vue s'affiche correctement mais obtenez toujours l'erreur

A tenté 

Impossible de trouver la classe de contrôleur d'interface 'InterfaceController' pour instancier

WatchKit: impossible de trouver la classe du contrôleur d'interface

WatchKit reloadRootControllersWithNames provoquant une erreur, avec pageController ou après Push/pop

Deux liens suggèrent un bogue. S'il s'agit d'un bogue, il ne serait sûrement pas présent dans la version finale de XCode et tout le monde aurait le même comportement en rendant watcKit presque inutile.

16
JSA986

Pour quiconque a cela. La classe doit être définie sur l'appartenance cible correcte, à savoir yourApp WatchKit Extension plutôt que yourApp WatchKit App lors de la création de votre classe. Il peut également être modifié dans l'appartenance à la cible dans le générateur d'interface. 

22
JSA986

J'ai résolu ce problème en: 

1) supprimer le fichier InterfaceController qui pose des problèmes et le recréer dans le dossier de l'extension WatchKit du projet (pas seulement dans un groupe du navigateur de projet). Par défaut, xcode vous donne le dossier Watch App - vous devez le changer. 

2) définition de la classe dans Interface Builder pour que module soit défini sur ProjectName_WatchKit_Extension

Si module n'est pas défini - xcode ne pourra pas trouver votre classe

36

J'avais les mêmes problèmes après la récente version 8.2. Je devais aller sur chacun de mes InterfaceControllers et ajuster son module de classe personnalisé à tout ce qui était présenté comme une option ou "aucun".

14
devone

Après avoir ajouté le nouveau Contrôleur d'interface dans WatchOS, le problème ci-dessus est survenu en raison d'une erreur 

" Nom du module dans la classe personnalisée ": -

 enter image description here

Après changer le module en extension le problème ci-dessus est résolu.

 enter image description here

8
Shrawan
1. select your WKInterfaceController
2. select Inherit Module From Target

 enter image description here  enter image description here

2
Kamani Jasmin

Dans mon cas, j'ai renommé Watch Kit Extension en WatchKitExtension. Le simulateur fonctionnait correctement, mais il n'a pas pu s'exécuter après le nettoyage complet du projet.
Merci à https://stackoverflow.com/a/29904047/104170 .
Pour que cela fonctionne, je devais simplement spécifier le bon module dans mon fichier .storyboard.

2
tt.Kilew

Lorsque vous créez votre contrôleur d'interface Glance, veillez à l'ajouter à l'extension Watch App. C'était mon problème. 

1
VaporwareWolf

Vous devez vérifier que le contrôleur de vue se trouve dans votre source de compilation ici: Sélectionnez Projet> Sélectionnez la cible de l'extension Watchkit> Phases de construction> Sources de compilation.

1
zaolian

Je l'ai résolu en mettant Module à Watch_Extension

1
rgreso

Il suffit de regarder cible pour les deux classe et interface . Il devrait être réglé sur Extension c'est tout

0
Ali

Assurez-vous que vous créez le nouveau membre de classe des EXTENSIONS lors de la création de la classe.

0
kavehmb

Le problème ici est que nous avons configuré le module pour les contrôleurs d'interface de manière incorrecte. Puisque ces contrôleurs appartiennent à la cible Watch Extension, nous pouvons trouver le module de produit ci-dessous.

Image montrant comment trouver le nom du module du produit

image to show how to find the product module name

Une fois que nous avons le nom du module, allez-y et configurez-le pour chaque contrôleur d'interface.

image pour montrer comment définir le nom du produit

image to show how to set the product name

0
haikynguyen

Je l'ai corrigé en effaçant le nom du module dans le storyboard pour cette classe d'interface spécifique. (Qui est une classe objective-c).

0
basvk

Cliquez sur Mon scénario de la Watch> Scène du contrôleur d'interface> Inspecteur d'identité (l'icône du milieu, parmi les 5 icônes figurant dans le menu à droite de Xcode)> Définir le module sur "Extension de [NomProjet]] a fonctionné pour moi!

0
Josh