zoukankan      html  css  js  c++  java
  • 在view中实现UIViewController的跳转 By H.L

    view中是不能进行UIViewController的push,pop等操作的,若进行跳转操作,一般是用代理,block,通知等实现,那如何实现在ViewController的subView中实现跳转操作呢,其实只要获取该view所在的ViewController即可。

    获取view所在UIViewController

    UIView+UIViewController.h

    #import <UIKit/UIKit.h>
    
    @interface UIView (UIViewController)
    
    - (UIViewController *)viewController;
    
    @end
    

    UIView+UIViewController.m

    #import "UIView+UIViewController.h"
    
    @implementation UIView (UIViewController)
    
    - (UIViewController *)viewController {
        
        //通过响应者链,获得view所在的视图控制器
        UIResponder *next = self.nextResponder;
        do {
            //判断响应者对象是否是视图控制器类型
            if ([next isKindOfClass:[UIViewController class]]) {
                return (UIViewController *)next;
            }
            next = next.nextResponder;
        }while(next != nil);
        
        return nil;
    }
    
    @end

    or

    - (UIViewController *)viewController {
        // Traverse responder chain. Return first found view controller, which will be the view's view controller.
        UIResponder *responder = self;
        while ((responder = [responder nextResponder]))
            if ([responder isKindOfClass: [UIViewController class]])
                return (UIViewController *)responder;
        
        return nil;
    }
    - (UIViewController*)viewController {
        for (UIView* next = [self superview]; next; next = next.superview) {
            UIResponder* nextResponder = [next nextResponder];
            if ([nextResponder isKindOfClass:[UIViewController class]]) {
                return (UIViewController*)nextResponder;
            }
        }
        return nil;
    }
    

    其它 iOS 获取当前正在显示的ViewController 

      

    使用:

    在subview中导入  #import "UIView+UIViewController.h"

    -(void)viewDidSelect
    {
        WebViewController *vc = [[WebViewController alloc] init];
        vc.webUrl =@"http://www.baidu.com";
        
        //如果VC 是添加在Nav 上的 用
        [self.viewController.navigationController pushViewController:ViewController animated:YES];
        
        //else 如果没有添加用
        [self presentModalViewController: ViewController animated:YES];
    }
  • 相关阅读:
    商业模式--资源整合
    “不小心出卖了领导”
    计算机禁用桌面并且禁用键盘Win+*快捷键组合之后如何打开文件资源管理器
    spring-boot 参数长度、文件上传大小限制问题
    Python 学习基础
    Python字典详解
    Python元组
    Python列表详解
    Python变量类型
    Python字符串详解
  • 原文地址:https://www.cnblogs.com/sixindev/p/4856879.html
Copyright © 2011-2022 走看看