zoukankan      html  css  js  c++  java
  • 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视图,这个可以自己设置;

  • 相关阅读:
    javascript 字符串与正则
    微信小程序 实现三级联动-省市区
    VUE图片懒加载-vue lazyload插件的简单使用
    移动端使用mint-ui loadmore实现下拉刷新上拉显示更多
    vue-cli创建的项目中引入第三方库报错 'caller', 'calle', and 'arguments' properties .....报错问题
    js判断两个数组是否相等
    234回文链表
    剑指 Offer 22. 链表中倒数第k个节点
    返回倒数第 k 个节点
    leetcode 179.最大数
  • 原文地址:https://www.cnblogs.com/answer-Allen/p/4815316.html
Copyright © 2011-2022 走看看