迁移到" unwindForSegue()"来自" segueForUnwindingToViewController()"

时间:2016-06-28 07:58:44

标签: ios

Apple API文档表明不推荐使用segueForUnwindingToViewController(),我应该使用unwindForSegue()代替自定义segue。我找到this post但他们似乎仍然使用" segueForUnwindingToViewController()"。

我不确定如何正确使用unwindForSegue()因为segueForUnwindingToViewController()采用了以下参数

  • toViewController
  • fromViewController
  • 标识符

并返回" UIStoryBoardSegue"。 E.g。

  override func segueForUnwindingToViewController(toViewController: UIViewController, fromViewController: UIViewController, identifier: String?) -> UIStoryboardSegue? {
    return MyCustomSegue(identifier: identifier!, source: fromViewController, destination: toViewController, performHandler: { () -> Void in } )
  }

如何使用新的unwindForSegue()

传递我的标识符并创建自定义segue实例

1 个答案:

答案 0 :(得分:5)

嗯,这并不像看起来那么难。我认为设置自定义segue的方法很少。

<强>先决条件:

  1. 您需要创建自定义segue类,以便在UIViewControllers之间执行转换。不要忘记设置父类 - UIStoryboardSegue 。 (例如CustomSegue)
  2. 您需要覆盖容器视图控制器中的方法 -unwindForSegue:towardsViewController:,您可以从代码中填充您的segue
  3. 重要,您不需要在非容器的自定义视图控制器中覆盖此方法

    单向,您可以在故事板中选择segue并将其设置为您的segue类(例如, CustomSegue

    Example where to set custom segue class

    另一种方式,您可以从此方法创建segue并简单地执行它。例如,

    - (void)unwindForSegue:(UIStoryboardSegue *)unwindSegue towardsViewController:(UIViewController *)subsequentVC {
            CustomSegue *segue = [[CustomSegue alloc] initWithIdentifier:<#Segue Identifier#> source:unwindSegue.sourceViewController destination:unwindSegue.destinationViewController];
            [segue perform];
    }
    

    两种方法都能正常工作。希望这对你有所帮助。

    <小时/> P. S.您可以尝试这个测试项目(Xcode 7.3) - https://github.com/igorkislyuk/custom-animation-unwind-segue