Где установить переходную делегацию, отличную от prepareForSegue:?

Я тестирую некоторые пользовательские переходы между контроллерами представления. Как обычно, я установил протоколы перехода в 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 ответ

Вы должны удерживать делегата как свойство, иначе он будет освобожден и превратится в ноль.

let popupTransition = PopupTransition()

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

Теперь вы можете установить делегата, где вы предпочитаете.

Другие вопросы по тегам