Сегодня Extension имеет название, но без тела iOS 8
Я тестирую новый TodayExtensions в iOS 8, и я выполнил шаги для создания Today Extension, как описано в видео WWDC. Создание расширений для iOS и OS X, часть 1. Я добавил цветной UIView в ViewController в предоставленном раскадровке. Я получаю заголовок в моем центре уведомлений "Сегодня", но у меня нет тела с моим цветным видом. Это выглядит так (я сделал два):
![enter image description here]()
Кто-нибудь еще это понимает? Я установил точки останова во всех моих методах ViewControllers и ничего не вызвал. Я изменил свой Info.plist, чтобы просто перейти непосредственно к моему классу VC, а не к раскадровке, и ничего не получаю. Я могу изменить заголовок сегодняшнего расширения в info.plist.
Ответы
Ответ 1
Во-первых, чтобы проверить, что что-то происходит, добавьте awakeFromNib в свой контроллер представления и установите предпочтительный размер содержимого (весь код в Obj C):
- (void)awakeFromNib {
[super awakeFromNib];
[self setPreferredContentSize:CGSizeMake(self.view.bounds.size.width, 50)];
}
Как сказал вышеперечисленный микспер, закомментируйте метод init по умолчанию и создайте пустой initWithCoder: чтобы обойти некоторую ошибку в бета-версии 2:
-(id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
// init
}
return self;
}
//- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
// self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
// if (self) {
// // Custom initialization
// }
// return self;
//}
Теперь очистите и снова запустите. На этом этапе вы должны увидеть его изменение размера (убедитесь, что вы добавили ярлык с текстом или что-то для тестирования).
Убедитесь, что вы протестируете с помощью обычного класса UIViewController, а не подкласса. После того как вы увидите, что ваш размер виджета отвечает, попробуйте подкласс. Я потратил час сегодня, чтобы узнать, что использование UICollectionViewController просто не работает в Beta 2 (будет файл RADAR).
Ответ 2
Если вы используете схему приложения, а не схему виджетов, первое, что нужно проверить, это журнал устройства или журнал симулятора. Поскольку представление Today является частью системы, а не частью приложения, которое вы отлаживаете в Xcode, вы не увидите ошибок в контроллере представления виджетов на консоли Xcode. Вы можете проверить консоль симулятора в системном журнале:
![Simulator's log]()
Если на контроллере виджетов произошел сбой, он будет показывать что-то вроде этого:
xxxxx.local Widget [43414]: завершение приложения из-за неотображения исключение "NSUnknownKeyException", причина: "[ TodayViewController0x7fd893d7ca60 > setValue: forUndefinedKey:]: этот класс не является ключевым для кодирования ключевых слов.
Если вы выберете вместо этого виджет, xcode присоединяет отладчик к виджету сегодняшнего вида, и если вы включили "точку останова" Все исключения ", вы сможете увидеть, есть ли исключение и где находится rised.
![Widget target]()
Ответ 3
Прокомментируйте оригинальный метод init:
// init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
// super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
// // Custom initialization
// }
Добавьте этот метод init:
init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
// Custom initialization here
}
Очистите и создайте свой проект.
Убедитесь, что содержимое вашего виджета имеет ограничение по высоте.
Ответ 4
Я немного потрудился с этим.
Затем я выяснил, что он пытался вывести высоту представления с использованием ограничений для всех подзонов в MainInterface.storyboard.
Если вы добавите все необходимые ограничения для своих представлений в представлении, тогда можно будет вывести высоту Today Extension, и ваше представление будет выглядеть так, как вы планируете.
Ответ 5
Я столкнулся с теми же проблемами, что и с разными проблемами.
1) Если вы часто перезапускаете свой виджет с Xcode, его убивают на телефоне, и, похоже, система наказывает вас за это, неплохо всегда закрывать сегодняшнее представление, прежде чем убить своего виджета в Xcode, чтобы он получил "красиво" закончился вместо убитого Xcode
Решение:
Иногда единственным решением является удаление виджета из сегодняшнего представления и его чтение (и даже иногда удаление приложения с телефона и его установка снова).
2) Я использовал фреймворк регистрации и каждый раз, когда я пытался загрузить данные на сервер, виджет застыл и больше не реагировал. Когда я закрыл центр уведомлений и снова открыл его, у меня была такая же проблема, как и у вас с пустой виджет сегодня или виджет 0 высотой сегодня.
Решение:
Нехорошо, хотя, не загружая данные из кода виджета... действительно странная вещь есть, в отладочных сборках все работает отлично, но не в сборке релиза.