Skip to content

Instantly share code, notes, and snippets.

@nh7a
Created September 17, 2018 15:53
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