swift獲取View所在ViewController的控制器對象


  /** 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

        

        return UIViewController()

    }


/** 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;

}







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章