Segue de desenrolamento personalizado para iOS 8 e iOS 9
Minha pergunta é: como faço para que as seguintes etapas de desenrolamento personalizadas funcionem em um dispositivo com uma versão anterior ao iOS 9 e em um dispositivo executando o iOS 9?
Eu tenho um segmento personalizado mostrando um controlador de exibição e, em seguida, tenho um segmento de desenrolamento personalizado correspondente. Esse código funcionou bem no iOS 8 e é implementado criando subclasses de UIStoryboardSegue e implementando operform
método. Em seguida, substituo o seguinte método no meu Controlador de navegação personalizado:
- (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;
}
No iOS 9,segueForUnwindingToViewController
está obsoleto. Ainda funciona para o MyViewController CustomSegue; no entanto, o segue de desenrolamento padrão não funciona mais para nenhum outro segue de desenrolamento. Embora chamar o método em super retorne um segue de desenrolamento, o segue nunca ocorre, o controlador de exibição nunca é exibido e o usuário nunca pode voltar à tela anterior. Então, só para esclarecer, se eu usar um show regular segue, o correspondente desenrolar segue chama o método obsoleto, que chama o método em super, e não funciona.
Eu assisti a WWDC falar nos storyboards e pude corrigir esse problema no iOS 9: a) não substituindo mais esse método no meu Navigation Controller personalizado eb) entrando no storyboard, clicando no segue personalizado e entrando emCustomSegue
como a classe Segue. Infelizmente, como eu tenho como alvo o iOS 7, recebo o aviso "Somente seguidores personalizados suportam nomes de classes anteriores ao iOS 9", e o segue de desenrolamento personalizado agora não funciona no iOS 7 ou no iOS 8!