Где установить переходную делегацию, отличную от 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
}
Теперь вы можете установить делегата, где вы предпочитаете.