Vous ne savez pas si c'est une manière étrange de le faire mais dans Swift 3 je veux vérifier si un objet est un UIViewController
et est conforme à mon protocole Transitionable
. J'ai:Vérifiez si un objet est une classe spécifique et conforme à un protocole
guard let toViewController = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to),
let fromViewController = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.from),
let toTransitionable = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to) as? Transitionable,
let fromTransitionable = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.from) as? Transitionable
else {
transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
return
}
Mais j'espérais que je pourrais obtenir et objet qui est à la fois UIViewController
et Transitionable
pour le vers et à partir. i essayé let toViewController = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to) as? Transitionable as? UIViewController
mais qui garde comme un simple UIViewController
J'ai aussi essayé:
extension Transitionable where Self: UIViewController {
var viewController: UIViewController { return self }
}
Mais j'obtiens l'erreur: 'Transitionable' is not a subtype of 'UIViewController'
quand je l'appelle par exemple toTransitionable.viewController
transitionContext.containerView.addSubview(toTransitionable.viewController.view)
Je comprends que nous pouvons faire as? (UIViewController & Transitionable)
à Swift 4, mais ce projet va à Swift 3
j'espérais que je pourrais obtenir et objet qui est à la fois '' UIViewController' et Transitionable' – richy
J'ai modifié ma réponse pour tenter de résoudre votre problème – Sore