2016-09-11 46 views
0

我正在測試一些自定義的視圖控制器之間的轉換。像往常一樣,我在prepareForSegue:方法中設置轉換協議。一切都運轉良好,直到我想知道我們是否可以在其他地方設置此設置我試圖創建一個視圖控制器並以編程方式設置委託,但它不起作用。呈現的視圖控制器仍然使用默認的過渡。除prepareForSegue之外,在哪裏設置transitioningDelegate?

let popup = JopUpViewController() 
    popup.transitioningDelegate = PopupTransition() 
    self.presentViewController(popup, animated: true, completion: nil) 

我試圖創建一個類的函數和init視圖控制器後,我設置了代理,但它也沒工作。

class func create() -> JopUpViewController { 
     let popup = JopUpViewController() 
     popup.modalPresentationStyle = .OverCurrentContext 
     popup.transitioningDelegate = PopupTransition() 
     return popup 
} 

任何人都知道如何設置轉換委託,而不是在prepareForSegue:

回答

3

您必須將委託作爲一個屬性,否則它將釋放,並轉向爲零。

let popupTransition = PopupTransition() 

class func create() -> JopUpViewController { 
     let popup = JopUpViewController() 
     popup.modalPresentationStyle = .OverCurrentContext 
     popup.transitioningDelegate = self.popupTransition 
     return popup 
    } 

現在,您可以在任何地方設置代理。