不知道這是否是一種奇怪的方式來做到這一點,但在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 }
}
,但我得到的錯誤:'Transitionable' is not a subtype of 'UIViewController'
當我打電話toTransitionable.viewController
例如
transitionContext.containerView.addSubview(toTransitionable.viewController.view)
我明白,我們可以做斯威夫特4 as? (UIViewController & Transitionable)
但這個項目將是在斯威夫特3
我希望我能得到與客體,既'UIViewController'和'Transitionable' – richy
我編輯我的答案,試圖爲您解決問題 – Sore