美文网首页Swift编程swift
Swift获取当前试图的控制器

Swift获取当前试图的控制器

作者: MMD_ | 来源:发表于2018-05-14 17:00 被阅读16次

一、解决的问题

在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
    }
}

相关文章

网友评论

    本文标题:Swift获取当前试图的控制器

    本文链接:https://www.haomeiwen.com/subject/dhejdftx.html