I used to use this code to get the corresponding UIViewController
of my UIView
:
func parentVC(forView view: UIView) -> UIViewController? {
var responder = view as UIResponder
while (responder != nil) {
if let viewController = responder as? UIViewController {
return viewController
}
responder = responder.next!
}
return nil
}
However, I got a warning from the compiler:
Comparing non-optional value of type 'UIResponder' to 'nil' always returns true
So I tried moving responder = responder.next!
inside the while
loop condition:
func parentVC(forView view: UIView) -> UIViewController? {
var responder = view as UIResponder
while (responder = responder.next!) {
if let viewController = responder as? UIViewController {
return viewController
}
}
return nil
}
Now the compiler is giving me an error:
Use of '=' in a boolean context, did you mean '=='?
No, I didn't mean to use the double equals sign. I understand that this message may help to catch typos, but why can't Xcode make this error message into a warning message, and allow me to compile and run my code? What is preventing this code from working?