これは奇妙な方法ですがSwift 3であるかどうかわかりませんUIViewController
のオブジェクトであるかどうかをチェックしたいと思い、私のプロトコルTransitionable
に準拠しています。私が持っている:オブジェクトが特定のクラスであり、プロトコルに準拠していることを確認してください
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
}
しかし、私は、私が取得し、へとからの両方UIViewController
とTransitionable
をあるオブジェクト可能性が期待していました。 私はlet toViewController = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to) as? Transitionable as? UIViewController
を試みたが、それは私も試しただけUIViewController
としてそれを保持します:
extension Transitionable where Self: UIViewController {
var viewController: UIViewController { return self }
}
しかし、私はエラーを取得:私は、例えばtoTransitionable.viewController
を呼び出すとき'Transitionable' is not a subtype of 'UIViewController'
を
transitionContext.containerView.addSubview(toTransitionable.viewController.view)
私たちはスウィフト4でas? (UIViewController & Transitionable)
を行うことができます理解しますが、このプロジェクトはスウィフト3に
私が取得し、両方 'UIViewController'と' Transitionable'私が解決しようとする私の答えを編集した – richy
あるオブジェクト可能性が期待していたあなたの問題 – Sore