我有一个自定义Segue展示一个视图控制器,然后有一个相应的自定义展开Segue。此代码在iOS 8中运行良好,并通过生成UIStoryboardSegue的子类并实现perform方法来实现。然后我在自定义导航控制器
中覆盖以下方法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;但是,默认的展开segue不再适用于任何其他展开segue。虽然在super上调用方法会返回一个展开segue,但segue永远不会发生,视图控制器永远不会弹出,并且用户永远不会返回到前一个屏幕。所以要清楚一点,如果我使用常规show segue,相应的unwind segue会调用不推荐使用的方法,该方法在super上调用方法,并且不起作用。