swift获取View所在ViewController的控制器对象

来源:互联网 发布:虚拟漫游软件 编辑:程序博客网 时间:2024/06/05 06:13


  /** swift方法   在View 中实现这个方法即可

     *viewController () -> (UIViewController) 作用:根据调用这个方法的对象 获取他的控制器对象

     */

   func viewController () -> (UIViewController){

    

       /* 方法1.

            //1.通过响应者链关系,取得此视图的下一个响应者

            var next:UIResponder?

            next = self.nextResponder()!

            while next != nil {

                //2.判断响应者对象是否是视图控制器类型

                if ((next as?UIViewController) != nil) {

                    return (next as! UIViewController)

                    

                }else {

                    next = next?.nextResponder()

                }

            }

            

            return UIViewController()

        */

        

        //1.通过响应者链关系,取得此视图的下一个响应者

       var next:UIResponder?

        next =self.nextResponder()!

       repeat {

            //2.判断响应者对象是否是视图控制器类型

           if ((next as?UIViewController) !=nil) {

               return (next as!UIViewController)


            }else {

                next = next?.nextResponder()

            }

            

        }while next != nil

        

        returnUIViewController()

    }


/** OC中的方法   在 View 中实现这个方法即可 写一个类目(类别),在.h文件声明这个方法,在.m文件实现这个方法

     *

- (UIViewController *)viewController 作用:根据调用这个方法的对象  获取他的控制器对象

     */


- (UIViewController *)viewController {

    

    //通过响应者链关系,取得此视图的下一个响应者

    UIResponder *next =self.nextResponder;

    

   do {

        

        //判断响应者对象是否是视图控制器类型

       if ([next isKindOfClass:[UIViewController class]]) {

           return (UIViewController *)next;

        }

        

        next = next.nextResponder;

        

    }while(next !=nil);

    

    

    return nil;

}







0 0
原创粉丝点击