博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS中如何根据UIView获取所在的UIViewController
阅读量:6162 次
发布时间:2019-06-21

本文共 1115 字,大约阅读时间需要 3 分钟。

简述

  • 本文将讲述在iOS开发中如何根据某个UIView(前提是该UIView已经被加入到Controller中)来获取所属的UIViewController。

UIResponder

  • 在UIKit中,UIApplication、UIView、UIViewController这几个类都是直接继承自UIResponder类。另外SpriteKit中的SKNode也是继承自UIResponder类。因此UIKit中的视图、控件、视图控制器,以及我们自定义的视图及视图控制器都有响应事件的能力。这些对象通常被称为响应对象,或者是响应者(以下我们统一使用响应者)。
  • 视图、视图控制器、窗口对象和app对象都能处理事件。另外需要注意的是,手势也会影响到事件的传递。
  • Responder Chain 大概的传递规则就是从视图顶层的UIView向下到UIViewController再到RootViewController再到Window最后到Application。

实现

  • OC版本
id responder = self.nextResponder;while (![responder isKindOfClass: [UIViewController class]] && ![responder isKindOfClass: [UIWindow class]])	 {        responder = [responder nextResponder];    }    if ([responder isKindOfClass: [UIViewController class]])    {        // responder就是view所在的控制器        // do something    }复制代码
  • Swift版本
func viewController(aClass: AnyClass) -> UIViewController?{       for(var next=self.superview;(next != nil);next=next?.superview){           let nextResponder = next?.nextResponder()           if((nextResponder?.isKindOfClass(aClass)) != nil){               return nextResponder as? UIViewController           }       }       return nil   }复制代码

转载地址:http://neefa.baihongyu.com/

你可能感兴趣的文章
Apache通过mod_php5支持PHP
查看>>
java学习:jdbc连接示例
查看>>
Silverlight 如何手动打包xap
查看>>
禁用ViewState
查看>>
Android图片压缩(质量压缩和尺寸压缩)
查看>>
nilfs (a continuent snapshot file system) used with PostgreSQL
查看>>
【SICP练习】150 练习4.6
查看>>
HTTP缓存应用
查看>>
KubeEdge向左,K3S向右
查看>>
DTCC2013:基于网络监听数据库安全审计
查看>>
CCNA考试要点大搜集(二)
查看>>
ajax查询数据库时数据无法更新的问题
查看>>
Kickstart 无人职守安装,终于搞定了。
查看>>
linux开源万岁
查看>>
linux/CentOS6忘记root密码解决办法
查看>>
25个常用的Linux iptables规则
查看>>
集中管理系统--puppet
查看>>
Exchange 2013 PowerShell配置文件
查看>>
JavaAPI详解系列(1):String类(1)
查看>>
HTML条件注释判断IE<!--[if IE]><!--[if lt IE 9]>
查看>>