Skip to content

Instantly share code, notes, and snippets.

@nh7a
Created September 17, 2018 15:53
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nh7a/1c60e899f89f52b18dbaade973341fd1 to your computer and use it in GitHub Desktop.
Save nh7a/1c60e899f89f52b18dbaade973341fd1 to your computer and use it in GitHub Desktop.
extension UIResponder {
struct ResponderIterator: IteratorProtocol {
private var responder: UIResponder?
init(_ responder: UIResponder) { self.responder = responder }
mutating func next() -> UIResponder? {
responder = responder?.next
return responder
}
}
struct ResponderSequence: Sequence {
private let responder: UIResponder
init(_ responder: UIResponder) { self.responder = responder }
func makeIterator() -> ResponderIterator {
return ResponderIterator(responder)
}
}
var responders: ResponderSequence {
return ResponderSequence(self)
}
}
extension UITableViewCell {
var parentTableView: UITableView? {
return responders.first { $0 is UITableView } as? UITableView
}
var parentTableViewController: UITableViewController? {
return responders.first { $0 is UITableViewController } as? UITableViewController
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment