Swift编程swift

Swift获取当前试图的控制器

2018-05-14  本文已影响16人  MMD_

一、解决的问题

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

二、具体实现代码

xtension 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
    }
}
上一篇下一篇

猜你喜欢

热点阅读