响应者链


今天去面试一家360和磊科投资的公司的时候,

面试官问了我一下响应者链的问题。让我说一下怎么写的竟然突然忘记了。

现在拿出来继续学习下好了。

1、创建个分类

//找到视图以及子类对象的响应者链条中的视图控制器
extension UIView {
    
    
    //查找响应者链条中的导航视图控制器
    func navController() -> UINavigationController? {
        
        var next = nextResponder()
        
        //遍历响应者链条
        while next != nil {
            if let nav = next as? UINavigationController {
                return nav
            }
            
            
            //如果下一个响应者不是导航视图控制器
            //查找下一个响应者下一个响应者
            next = next?.nextResponder()
        }
        
        return nil
    }
}

2、去调用这个分类的,寻找到对应的响应者,执行操作。(注意push出来后背景颜色问题)

class demoView: UIView {

    
    //MARK: 按钮的监听事件
    @objc private func repostBtnDidClikc() {
        //页面跳转
        let temp = TempViewController()
        //设置底部tabbar隐藏
        temp.hidesBottomBarWhenPushed = true
        //使用导航视图控制 跳转页面
        navController()?.pushViewController(temp, animated: true)
        
    }




你可能感兴趣的:(响应者链)