首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从UIView转到UIViewController?

从UIView转到UIViewController?
EN

Stack Overflow用户
提问于 2009-08-27 11:22:45
回答 22查看 148.1K关注 0票数 192

有没有一种从UIViewUIViewController的内置方法?我知道你可以通过[self view]UIViewController转到它的UIView,但是我想知道是否有反向引用?

EN

Stack Overflow用户

发布于 2015-12-05 13:49:43

这肯定是一个糟糕的想法和错误的设计,但我相信我们都可以享受@Phil_M提出的最佳答案的快速解决方案:

代码语言:javascript
复制
static func firstAvailableUIViewController(fromResponder responder: UIResponder) -> UIViewController? {
    func traverseResponderChainForUIViewController(responder: UIResponder) -> UIViewController? {
        if let nextResponder = responder.nextResponder() {
            if let nextResp = nextResponder as? UIViewController {
                return nextResp
            } else {
                return traverseResponderChainForUIViewController(nextResponder)
            }
        }
        return nil
    }

    return traverseResponderChainForUIViewController(responder)
}

如果您的目的是做一些简单的事情,比如显示一个模式对话框或跟踪数据,这并不能证明使用协议是合理的。我个人将这个函数存储在一个实用程序对象中,您可以在实现UIResponder协议的任何东西中使用它,如下所示:

代码语言:javascript
复制
if let viewController = MyUtilityClass.firstAvailableUIViewController(self) {}

所有功劳都归于@Phil_M

票数 3
EN
查看全部 22 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1340434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档