美文网首页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