私の質問は、次のカスタム アンワインド セグエを、iOS 9 より前のバージョンのデバイスと iOS 9 を実行しているデバイスで動作させるにはどうすればよいですか?
ビューコントローラーを表示するカスタムセグエがあり、対応するカスタムアンワインドセグエがあります。このコードは 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 でメソッドを呼び出すとアンワインド セグエが返されますが、セグエは発生せず、View Controller はポップされず、ユーザーは前の画面に戻ることができません。したがって、明確にするために、通常の show セグエを使用すると、対応するアンワインド セグエが非推奨のメソッドを呼び出します。このメソッドはスーパーでメソッドを呼び出し、機能しません。
ストーリーボードで WWDC の話を見て、iOS 9 でこの問題を修正することができました。a) カスタム ナビゲーション コントローラーでこのメソッドをオーバーライドしなくなりました。b) ストーリーボードに移動し、カスタム セグエをクリックして入力します。CustomSegue
セグエクラスとして。残念ながら、私は iOS 7 をターゲットにしているため、「iOS 9 より前のクラス名をサポートするのはカスタム セグエのみです」という警告が表示され、カスタム アンワインド セグエは iOS 7 または iOS 8 では機能しません。