У меня есть Custom Segue с контроллером представления, а затем соответствующий Custom Unwind Segue. Этот код отлично работал в iOS 8 и реализован путем создания подклассов UIStoryboardSegue и реализации метода execute. Затем я переопределяю следующий метод в своем пользовательском контроллере навигации.
func segueForUnwindingToViewController(toViewController: UIViewController, fromViewController: UIViewController, identifier: String) -> UIStoryboardSegue {
var segue: UIStoryboardSegue
if (fromViewController is MyViewController.self) {
segue = CustomSegue(identifier: identifier, source: fromViewController, destination: toViewController)
//Custom Unwind Segue
}
else {
var unwindSegue: UIStoryboardSegue = super.segueForUnwindingToViewController(toViewController, fromViewController: fromViewController, identifier: identifier)
//Normal Unwind Segue
segue = unwindSegue
}
return segue
}
В iOS 9 segueForUnwindingToViewController устарел. Он по-прежнему работает для MyViewController CustomSegue; однако этап раскрутки по умолчанию больше не работает ни для каких других переходов раскрутки. Несмотря на то, что вызов метода в super возвращает переход отката, переход никогда не происходит, контроллер представления никогда не выталкивается, и пользователь никогда не может вернуться к предыдущему экрану. Так что просто для ясности: если я использую обычный переход шоу, соответствующий переход раскрутки вызывает устаревший метод, который вызывает метод в super и не работает.