2016-06-28 112 views
0

Apple API文檔指出segueForUnwindingToViewController()已過時,我應該使用unwindForSegue()代替用於自定義segue。我發現this post但他們仍然使用「segueForUnwindingToViewController()」。從「segueForUnwindingToViewController()」遷移到「unwindForSegue()」

我不知道如何正確使用unwindForSegue(),因爲segueForUnwindingToViewController()採取了以下論據

  • toViewController
  • fromViewController
  • 標識

,並返回 「UIStoryBoardSegue」。例如。

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

我如何通過我的標識符和創建我的自定義使用新unwindForSegue()原因請看實例?

回答

5

好吧,這並不像看起來那麼難。我認爲有很多方法來設置你的自定義賽格。

先決條件:

  1. 您需要創建自定義賽格瑞類UIViewControllers之間進行過渡。不要忘記設置父級 - UIStoryboardSegue。 (CustomSegue,例如)
  2. 你需要在你的容器視圖控制器-unwindForSegue重寫方法:tow​​ardsViewController:在那裏你可以在代碼中填入你的賽格瑞

重要,你並不需要重寫這種方法在你的自定義視圖控制器,不是容器

一種方式,你可以選擇你的故事板Segue公司,並將其設置Class將您賽格瑞類(例如,CustomSegue

Example where to set custom segue class

另一種方式,您可以創建這個方法賽格瑞和簡單地執行它。例如,

- (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