2015-03-18 14 views
14

Ilekroć wykonuję połączenia w mojej podklasie WKIInterfaceController pojawia się błąd WatchKit error - unable to find interface controller class 'myClass' to instantiate i wskaźnik aktywności pokazany w symulatorze i widok nie ładuje się. Odłącz wszystkie conections i widok wyświetla poprawnie, ale nadal pojawia się błądBłąd WatchKit - nie można znaleźć klasy kontrolera interfejsu '' do utworzenia instancji

próbowali

Unable to find interface controller class 'InterfaceController' to instantiate

WatchKit: unable to find interface controller class

WatchKit reloadRootControllersWithNames causing error, with pageController or after push/pop

Dwa linki sugeruje błąd, jeżeli jest to błąd ten będzie na pewno nie będzie obecny w wydaniu wersji XCode i wszyscy będą doświadczać tego samego sposobu renderowania watcKit, ale bezużytecznego?

+0

Istnieje wiele wiele błędów w oryginalnej wersji XCode !! XD – Josh

Odpowiedz

18

Dla każdego, kto to ma. Podczas tworzenia klasy klasa musi mieć ustawione prawidłowe członkostwo docelowe, tj. yourApp WatchKit Extension, a nie yourApp WatchKit App. Może być również edytowany w członkostwie Target w programie budującym interfejs.

13

Miałem takie same problemy po ostatniej wersji 8.2. Musiałem przejść do każdego z moich kontrolerów InterfaceController i dostosować jego moduł klasy niestandardowej do tego, co pokazano jako opcję lub "none".

+1

To była dla mnie wielka pomoc ... ten sam problem i nic więcej nie działało, dziękuję! – GarySabo

+1

Miałem ten problem po skopiowaniu InterfaceController z istniejącego projektu do bieżącego projektu. Naprawiono, zmieniając moduł z powrotem na none/empty. Dzięki. – mumush

29

I rozwiązać ten problem przez:

1) usuwanie kłopoty podejmowania plik InterfaceController i tworząc je ponownie w folderze WatchKit Extension w projekcie (nie tylko w grupie w nawigatorze projektu). Domyślnie xcode daje ci folder Watch App - musisz go zmienić.

2) ustalanie klasy w konstruktorze Interface tak że moduł została ustawiona ProjectName_WatchKit_Extension

Jeśli moduł nie jest ustawiony - Xcode nie będzie w stanie znaleźć swoją klasę

+0

To był mój problem, moduł nie został ustawiony z jakiegoś dziwnego powodu. Korzystanie z nowego Xcode 7. –

+2

To był również mój problem, jednak nie udało mi się go zmienić z opisem. Opcja modułu znajduje się w Konstruktorze interfejsów, prawym panelu, trzeciej zakładce, tuż pod opcją Klasy. – Ave

2

W moim przypadku zmieniono nazwę na Watch Kit Extension na WatchKitExtension, a program działał pomyślnie na symulatorze, ale nie udało się go uruchomić po pełnym oczyszczeniu projektu.
Dzięki https://stackoverflow.com/a/29904047/104170.
Aby to działa po prostu potrzebne do określenia prawidłowego modułu w moim pliku .storyboard

0

Upewnij się, aby nowy członek klasa rozszerzeń podczas tworzenia klasy.

0

Naprawiłem to, usuwając nazwę modułu z storyboardu dla tej konkretnej klasy interfejsu. (Która jest klasą obiektu-c).

1

Po utworzeniu kontrolera interfejsu skrótu należy go dodać do rozszerzenia aplikacji Watch. To był mój problem.

1

Trzeba sprawdzić, czy kontroler widoku jest w źródle kompilacji tutaj: Select Project> Wybierz Watchkit Rozbudowa docelowa> Budowa Fazy> Skompiluj Źródła

+0

Zostało to już poprawnie potwierdzone i oznaczone jako poprawne "klasa musi być ustawiona na prawidłową docelową członkostwo" to nie jest kwestia zasobów kompilacji – JSA986

+0

@ JSA986 Dzięki za komentarz! Wpadłem na problem, a powyższa poprawna odpowiedź nie była wystarczająco szczegółowa, aby rozwiązać problem. Mówi mi, dlaczego, ale nie jak. Dlatego myślę, że pisanie kroków tutaj może być przydatne dla osób, które nie mają doświadczenia w tworzeniu systemu iOS. – zaolian

0

kliknięcie zegarek ujęć> Scena kontroler interfejsu> Identity Inspector (środkowa ikona, z 5 ikon, które pojawiają się w menu po prawej stronie Xcode)> Ustaw moduł na "Rozszerzenie [Twoja nazwa]" pracował dla mnie!

+0

Jeśli twoja nazwa projektu jest nazwą ze spacjami, to np. Dosłownie Foo LooExtension jak to jest? – user1007522

+0

Nie jestem pewien ... @ user1007522 – Josh

0

Wystarczy spojrzeć cel zarówno klasy i interfejsu. Powinien być ustawiony na Extension to wszystko

0

Rozwiązałem go przez ustawienie modułu do Watch_Extension

4

Po dodaniu nowego kontrolera interfejsu w WatchOS powyżej problem jest powstałe wskutek niewłaściwego

"Module nazwa w niestandardowej klasy ": -

enter image description here

Po zmiana powyższego modułu na rozszerzenie została rozwiązana.

enter image description here

+1

Dzięki za umieszczenie zdjęć! W ten sposób szybciej wchłaniam obrazy. – Jacksonkr