Мой вопрос: как заставить следующий настраиваемый этап раскрутки работать на устройстве с версией до iOS 9, а также на устройстве под управлением iOS 9?
У меня есть Custom Segue, показывающий контроллер представления, а затем соответствующий Custom Unwind Segue. Этот код отлично работал в iOS 8 и реализован путем создания подклассов UIStoryboardSegue и реализации метода perform
. Затем я переопределяю следующий метод в своем пользовательском контроллере навигации:
- (UIStoryboardSegue *) segueForUnwindingToViewController: (UIViewController *)toViewController fromViewController:(UIViewController *)fromViewController identifier:(NSString *)identifier
{
UIStoryboardSegue *segue;
if([fromViewController isKindOfClass:[MyViewController class]]){
segue = [[CustomSegue alloc] initWithIdentifier:identifier source:fromViewController destination:toViewController]; //Custom Unwind Segue
}
else{
UIStoryboardSegue *unwindSegue = [super segueForUnwindingToViewController:toViewController fromViewController:fromViewController identifier:identifier]; //Normal Unwind Segue
segue = unwindSegue;
}
return segue;
}
В iOS 9 segueForUnwindingToViewController
устарело. Он по-прежнему работает для MyViewController CustomSegue; однако этап раскрутки по умолчанию больше не работает ни для каких других переходов раскрутки. Несмотря на то, что вызов метода в super возвращает переход отката, переход никогда не происходит, контроллер представления никогда не выталкивается, и пользователь никогда не может вернуться к предыдущему экрану. Так что просто для ясности: если я использую обычный переход шоу, соответствующий переход раскрутки вызывает устаревший метод, который вызывает метод в super и не работает.
Я смотрел доклад WWDC о раскадровках и смог решить эту проблему в iOS 9: а) больше не переопределяя этот метод в моем пользовательском контроллере навигации, и б) зайдя в раскадровку, щелкнув пользовательский переход и введя CustomSegue
в качестве класса перехода. К сожалению, поскольку я ориентируюсь на iOS 7, я получаю предупреждение «Только пользовательские переходы поддерживают имена классов до iOS 9», а настраиваемый переход раскрутки теперь не работает для iOS 7 или iOS 8!