Ошибка WatchKit - не удается найти класс контроллера интерфейса '' для создания экземпляра

Всякий раз, когда я делаю какие-либо подключения в моем подклассе WKIInterfaceController я получаю ошибку WatchKit error - unable to find interface controller class 'myClass' to instantiate а индикатор активности, отображаемый в симуляторе, и представление не загружается. Отключите все коннекты и отобразите отображение правильно, но все же получите ошибку

Пытался

Не удалось найти интерфейс контроллера класса InterfaceController для создания экземпляра

WatchKit: не удалось найти интерфейс класса контроллера

WatchKit reloadRootControllersWithNames вызывает ошибку, с помощью pageController или после push/pop

Две ссылки указывают на ошибку: если это ошибка, которая, несомненно, не будет присутствовать в версии XCode для выпуска, и все будут испытывать такое же поведение, что и watcKit, но все же бесполезно?

Ответы

Ответ 1

Для всех, кто имеет это. Для создания класса должен быть установлен правильный целевой член, т. yourApp WatchKit Extension а не yourApp WatchKit App. Он также может быть отредактирован в целевом членстве в построителе интерфейса.

Ответ 2

Я решил эту проблему:

1) удаление проблемного файла InterfaceController и создание его снова в папке для WatchKit Extension в проекте (не только в группе в навигаторе проекта). По умолчанию xcode предоставляет папку Watch App - вам нужно ее изменить.

2) класс настройки в Interface Builder, чтобы модуль был установлен в ProjectName_WatchKit_Extension

Если модуль не установлен - xcode не сможет найти ваш класс

Ответ 3

У меня были такие же проблемы после недавнего выпуска в 8.2. Я должен был перейти к каждому из моих интерфейсных контроллеров и настроить свой собственный модуль класса на все, что было показано как опция или "none".

Ответ 4

После добавления нового контроллера интерфейса в WatchOS выше проблема возникает из-за неправильного

" Имя модуля в пользовательском классе ": -

enter image description here

После изменения модуля на расширение выше проблема решена.

enter image description here

Ответ 5

В моем случае я переименовал Watch Kit Extension в WatchKitExtension, и он WatchKitExtension работал на симуляторе, но не смог запустить после полного очищения проекта.
Благодаря fooobar.com/questions/9861984/....
Чтобы заставить его работать, мне просто нужно было указать правильный модуль в моем файле .storyboard

Ответ 6

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

enter image description here enter image description here

Ответ 7

Когда вы создаете свой контроллер интерфейса взгляда, обязательно добавьте его в расширение приложения "Наблюдение". Это была моя проблема.

Ответ 8

Вам нужно проверить, что контроллер просмотра находится в вашем источнике компиляции: Выберите "Проект"> "Выбор цели для сторожевого экрана"> "Фазы сборки"> "Скомпилировать источники"

Ответ 9

Я решил это, установив модуль Watch_Extension

Ответ 10

Проблема в том, что мы неправильно установили модуль для контроллеров интерфейса. Так как эти контроллеры принадлежат к целевому расширению Watch, мы можем найти модуль продукта, как показано ниже

Изображение, показывающее, как найти название модуля продукта

image to show how to find the product module name

Как только мы получим имя модуля, просто установите его для каждого контроллера интерфейса.

изображение, чтобы показать, как установить название продукта

image to show how to set the product name

Ответ 11

Убедитесь, что вы создаете новый член класса EXTENSIONS во время создания класса.

Ответ 12

Я исправил его, очистив имя модуля в раскадровке для этого конкретного класса интерфейса. (Что является объектно-c-классом).

Ответ 13

Нажав на мою раскладную панель Watch> Контроллер интерфейса Scene> Identity Inspector (средний значок, из 5 значков, которые отображаются в меню справа от Xcode)> Установить модуль на "[YourProjectName] Extension" работал для меня!

Ответ 14

Просто взгляните на цель как для класса, так и для интерфейса. Он должен быть установлен в Extension, чтобы все

Ответ 15

Просто сводил себя с ума по этому на пару часов. Следовал всем предложениям здесь, не повезло.

Что для меня закончилось, так это то, что я должен был сделать в первую очередь - я почистил папку сборки.

Продукт> Чистая папка сборки

Ответ 16

Убедитесь, что имя модуля в раскадровке совпадает с именем файла .appex в приложении tagerts/XXX WatchKit Вкладка "Общие" → "Каркасы, библиотеки и встроенный контент".