Skip to content

Instantly share code, notes, and snippets.

@codelynx
Created March 30, 2016 16:02
Show Gist options
  • Select an option

  • Save codelynx/184332a83f13ebb7df49a5cacf6c935d to your computer and use it in GitHub Desktop.

Select an option

Save codelynx/184332a83f13ebb7df49a5cacf6c935d to your computer and use it in GitHub Desktop.
UIView extension to find a specific UIViewController type in responder chain. And UIView extension to find specific UIView subclass in view hierarchy toward superview.
// UIView+Find.swift
//
// Copyright (c) 2016 Kaz Yoshikawa. Released under MIT License.
extension UIView {
func findViewController<T: UIViewController>() -> T? {
var responder = self.nextResponder()
while responder != nil {
if let viewController = responder as? T {
return viewController
}
responder = responder!.nextResponder()
}
return nil
}
func findView<T: UIView>() -> T? {
var view = self.superview
while view != nil {
if let view = view as? T {
return view
}
view = view!.superview
}
return nil
}
}
@codelynx
Copy link
Author

Usage:
let myViewController = view.findViewController() as? MyViewController
let myView = view.findView() as? MyView

Article about this code:
http://qiita.com/codelynx/items/d77f991aa5fb07374ef7
in Japanese

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment