Custom Unwind Segue для iOS 8 и iOS 9
Мой вопрос заключается в том, как заставить следующий пользовательский сценарий раскрутки работать на устройстве с версией до iOS 9, а также на устройстве под управлением iOS 9?
У меня есть Custom Segue, показывающий контроллер представления, и затем у меня есть Custom 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 9segueForUnwindingToViewController
устарела. Это все еще работает для MyViewController CustomSegue; однако по умолчанию сценарий раскрутки больше не работает для любого другого сегмента раскрутки. Хотя вызов метода в super возвращает результат отката, переход не происходит, контроллер представления никогда не извлекается, и пользователь никогда не может вернуться к предыдущему экрану. Так что просто для ясности, если я использую обычный show segue, соответствующий sewwind вызывает устаревший метод, который вызывает метод super и не работает.
Я смотрел доклад WWDC о раскадровках, и мне удалось исправить эту проблему в iOS 9, а) больше не переопределяя этот метод в моем настраиваемом контроллере навигации, и б) заходя в раскадровку, нажимая на пользовательский переход и входя вCustomSegue
как класс Segue. К сожалению, так как я нацеливаюсь на iOS 7, я получаю предупреждение «Только пользовательские сегменты поддерживают имена классов до iOS 9», и пользовательский переход на раскрутку теперь не работает для iOS 7 или iOS 8!