Как запустить приложение WatchKit

Я не могу запустить приложение watchkit из нового проекта. Если я запускаю пример проекта Apple, он работает нормально. Если я добавлю watchkit в свой существующий проект, добавив цель для watchkit. Затем запустите его, я получаю черный экран со временем, хотя в моей раскадровке у меня есть контроллер интерфейса, для которого установлено значение main с синим фоном. Эта строка кода вызывается.

- (void)willActivate {
    // This method is called when watch view controller is about to be visible to user
            [self.listTable setNumberOfRows:5 withRowType:@"List"];
    NSLog(@"%@ will activate", self);
}

Мое основное приложение (приложение для iPhone) для iPhone не запускается на симуляторе.

Это в основном то, что я вижу.

Черный экран Apple Watch Simulator с меткой времени в правом верхнем углу


person user1898829    schedule 20.11.2014    source источник
comment
Вам нужно предоставить немного больше контекста, чем это.   -  person Jeremy Huddleston Sequoia    schedule 20.11.2014
comment
Чтобы включить watchkit в существующий проект, я добавил цель для watckit. Код запускается, но симулятор не отражает то, что есть в моей раскадровке. Мне интересно, это проблема бета-версии или я как-то напортачил. Не могу думать, что это нечто большее. Если код работает, мой контроллер в моей раскадровке должен отображаться.   -  person user1898829    schedule 20.11.2014
comment
Вы случайно не используете OS X 10.10.2?   -  person Laksh Gandikota    schedule 16.01.2015
comment
Это было некоторое время назад, поэтому я думаю, что использовал одну из первых версий Yosemite. Я начал новый проект, и с тех пор у меня не было этой проблемы.   -  person user1898829    schedule 19.01.2015


Ответы (6)


Когда вы запускали, вы изменили схему на цель приложения WatchKit? Или вы просто создали и запустили приложение для iOS, как обычно? На данный момент вы не можете одновременно запускать целевое приложение iOS и целевое приложение Watch.

Вам нужно переключить схемы/цели, как показано здесь, затем выбрать тот же симулятор и отобразить пользовательский интерфейс часов, как вы уже сделали (в симуляторе -> вкладка «Оборудование» -> Внешний дисплей -> Apple Watch):

Снимок экрана XCode раскрывающегося списка схемы

Вам также необходимо добавлять/редактировать схемы для просмотра частей раскадровки Glance или Notification. Дополнительные сведения см. в файле «Readme» в примере проекта Lister.

person mc01    schedule 20.11.2014
comment
Можете ли вы опубликовать ссылку на пример проекта, который вы упомянули? - person GoodSp33d; 23.11.2014
comment
@GoodSp33d — это ссылка с сайта WatchKit здесь: developer.apple.com/watchkit — Scroll перейдите к ресурсам WatchKit (внизу справа) и найдите проект под названием Lister. Вы можете загрузить его в виде zip-файла с файлом Readme и кратким руководством, в котором объясняются некоторые вопросы, такие как использование общей группы для данных, настройка целей развертывания и т. д. - person mc01; 26.11.2014

У меня была аналогичная проблема. Вот несколько вещей, которые вы можете попробовать (решили это для меня)

  • убедитесь, что ваше приложение, watchkitapp и watchkitextension имеют один и тот же идентификатор пакета, например. com.company.app для приложения и com.company.app.watchapp для приложения watchkit. У меня есть несколько конфигураций сборки с разными идентификаторами пакетов, поэтому xcode выбрал неправильный во время создания цели просмотра. Вы получите ошибку компилятора, если приложение и расширение отличаются, но идентификатор пакета watchapp не создаст ошибку.
  • первый запуск приложения, прежде чем вы откроете часы в меню внешних устройств, затронет все точки останова и журналы, но после того, как вы откроете симулятор часов, вы ничего не увидите.
  • у меня пару раз приложение зависало при запуске - в навигаторе отладки состояние было "ожидание подключения". после этого каждый раз приходилось сбрасывать симулятор.

Надеюсь, поможет.

person Max Mikheyenko    schedule 24.11.2014

Это может быть не ваша проблема, но это была моя.

Если вы включаете таблицу в свое приложение для часов, вам необходимо реализовать методы в InterfaceController, чтобы что-либо отображалось. Вы не можете просто поместить таблицу, а затем поместить метку в первую строку, а затем отобразить ее (как в случае со статическим UITableViewController).

Следуйте этому руководству по добавлению таблиц: https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/WatchKitProgrammingGuide/Tables.html#//apple_ref/doc/uid/TP40014969-CH14-SW1

person Chris Slade    schedule 14.01.2015

О чувак. Это меня действительно ошеломило. Я работал над чем-то в бета-версии 1, и у меня была строка таблицы, которая была подклассом WKInterfaceController. В бета-версии 5 все, что я видел, было одним и тем же пустым представлением таблицы, а при вызове

[self.interfaceTable rowControllerAtIndex:x]

он возвращал ноль.

Решение. Моя строка стала подклассом NSObject, и все заработало нормально!

person johnyorke    schedule 03.02.2015

Просто измените схему на AppName WatchKit App и выполните сборку.

person Suhail Bhat    schedule 14.04.2015

  1. Измените схему, перейдя к продукту -> схема -> (выберите целевую схему приложения watchkit).
  2. Затем перейдите в раздел «Продукт» -> «Схема» -> «Редактировать схему» и выберите «Выполнить».
  3. Изменить исполняемый файл на приложение watchkit
  4. Создайте и запустите код.
person Kalai_Human    schedule 06.04.2015