Here is the sample source code:
ViewController:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view = Home()
}
}
Home
class Home: UIView {
...
func parent() -> UIViewController {
var responder: UIResponder? = self.next
while responder != nil {
if let c = responder as? UIViewController { return c }
else { responder = responder?.next }
}
return nil
}
}
For the line
var responder: UIResponder? = self.next
The responder
is always nil, that I cannot get the ViewController.
Something strange is that, I got no problem with the same function for all the subviews of Home
.