• UIView+ViewController.h 点击控制器上视图,使视图push下个视图控制的封装


    文件名:UIView+ViewController.h

    #import <UIKit/UIKit.h>

    @interface UIView (ViewController)

    - (UIViewController *)viewContoller;

    @end

    UIView+ViewController.m

    #import "UIView+ViewController.h"

    @implementation UIView (ViewController)

    - (UIViewController *)viewContoller {

        UIResponder *next = self.nextResponder;

        

        do {

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

                return (UIViewController *)next;

            }

            

            next = next.nextResponder;

            

        } while (next != nil);

        /**

         *  循环结束未找到

         */

        return nil;

    }

    @end

    返回的事一个视图控制器,接下来我们看看具体使用

    #import "MyView.h"

    #import "UIView+ViewController.h"

    #import "SecondViewController.h"

    新建一个类MyView继承与UIView,给button一事件 

    @implementation MyView

    - (instancetype)initWithFrame:(CGRect)frame

    {

        self = [super initWithFrame:frame];

        if (self) {

            

            UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

            button.frame = CGRectMake(90, 90, 90, 90);

            button.backgroundColor = [UIColor redColor];

            [button addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];

            [self addSubview:button];

        }

        return self;

    }

    - (void)buttonAction {

        SecondViewController *secondCtrl = [[SecondViewController alloc] init];

        

        [self.viewContoller.navigationController pushViewController:secondCtrl animated:YES];

        

    }

    在视图控制其中,创建MyView的一个对象

    MyView *myView = [[MyView alloc] initWithFrame:CGRectMake(0, 0, 375, 200)];

        myView.backgroundColor = [UIColor grayColor];

        [self.view addSubview:myView];

     另外还需要一个push视图,这个可以自己设置;

  • 相关阅读:
    微信视频号里的视频如何保存下来呢?
    jQuery实现平面图区域标记
    npm安装教程 yarn 基本安装和使用
    VitePress :VuePress 下一代建站工具
    基于CentOS的ECS实例实现OSS反向代理
    备份MySQL数据库到七牛云的shell脚本
    ShedLock 解决分布式结构下定时任务重复执行问题
    linux清除日志和文件缓存
    Communications link failure:The last packet successfully received from the server was 0 millisecond ago
    CentOS7安装nodeJs
  • 原文地址:https://www.cnblogs.com/answer-Allen/p/4815316.html
Copyright © 2020-2023  润新知