除了prepareForSegue之外,在哪里设置transitioningDelegate:?

时间:2016-09-11 16:58:39

标签: ios swift uiviewcontroller uiviewanimationtransition

我正在测试视图控制器之间的一些自定义转换。像往常一样,我在prepareForSegue:方法中设置了转换协议。一切都运作良好,直到我想知道我们是否可以在其他地方设置这个?我尝试创建一个视图控制器并以编程方式设置委托,但它不起作用。呈现的视图控制器仍使用默认转换。

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:

1 个答案:

答案 0 :(得分:3)

您必须将委托作为属性,否则它将取消分配,并转为nil。

{{1}}

现在您可以在任何地方设置代理。