Загрузить конкретный ViewController из раскадровки в iOS 8 Today Extension

Я работаю над приложением, которое предоставляет новое расширение/виджет «Сегодня» для Центра уведомлений, так как эта функция была добавлена ​​​​в iOS 8.

Однако мне нужно расширение, чтобы выбирать между парой разных контроллеров представления, настроенных в раскадровке, на основе значений одной простой переменной. Поэтому, если пользователь вносит изменения в основное приложение, эта переменная будет иметь другое значение, и поэтому предполагается, что расширение Today загрузит другой начальный контроллер представления.

Я читал похожие вопросы и их решения, поэтому я попытался настроить фиктивный контроллер представления в качестве начального контроллера представления на раскадровке расширения, создать несколько модальных переходов, указывающих на другие контроллеры представления, дал всем им имя идентификатора, отключил анимацию на переходы и реализовал пользовательский класс для фиктивного контроллера представления. Затем этот класс вызывает performSegueWithIdentifier: sender:nil в viewDidAppear:. Однако это, похоже, не работает с сегодняшним расширением, и показывает только «Невозможно загрузить», когда я тестирую его в симуляторе.

Редактировать: Хорошо, я делал что-то не так, это действительно работает. Но каждый раз, когда открывается центр уведомлений, содержимое отображаемых контроллеров представления исчезает и появляется снова в течение миллисекунд, потому что фиктивный контроллер представления загружается снова. Кроме того, высота расширений не меняется при представлении одного из других контроллеров представления.

Что я могу сделать, чтобы добиться желаемого поведения сегодняшнего расширения?


person lerei    schedule 19.09.2014    source источник


Ответы (1)


Не могли бы вы использовать TableViewController и поместить другую логику в TableCell вместо ViewController. Легко выбрать другую TableCell для вашей переменной в tableView(tableView:, cellForRowAtIndexPath:).

person Quanlong    schedule 11.07.2015