Swift快速查找Controller

本文已经更新到Swift3.0语法

一、解决的问题

在UIView中快速查找对应UIViewController、UINavigationController或者指定控制器的方法,原理根据事件的响应链,向上查找。

二、具体实现代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
extension UIView {
func findController() -> UIViewController! {
return self.findControllerWithClass(UIViewController.self)
}
func findNavigator() -> UINavigationController! {
return self.findControllerWithClass(UINavigationController.self)
}
func findControllerWithClass<T>(_ clzz: AnyClass) -> T? {
var responder = self.next
while(responder != nil) {
if (responder!.isKind(of: clzz)) {
return responder as? T
}
responder = responder?.next
}
return nil
}
}
Donate comment here