UIView
Swift

[Swift] UIViewから親のViewControllerを取得するためのExtension

More than 1 year has passed since last update.


Problem


  • UIViewから、自分を配置しているViewControllerを取得する


Solution

以下のようにUIViewのprotocol extensionを作成する


UIView+Extension.swift


extension UIView {
func parentViewController() -> UIViewController? {
var parentResponder: UIResponder? = self
while true {
guard let nextResponder = parentResponder?.nextResponder() else { return nil }
if let viewController = nextResponder as? UIViewController {
return viewController
}
parentResponder = nextResponder
}
}
}


Reference