• Button的封装


    1.通过对按钮的封装,从而减少了代码量,我们不需要大段落的去创建按钮,只要通过封装的Button类创建即可,这里我们利用block来进行封装.

    (1)首先创建一个类,继承Button类

    (2)然后定义block

    (3)定义类方法

    (4)在.m中实现类方法

    2.具体代码如下:

    (1)在.h文件中

    #import <UIKit/UIKit.h>

    @class MGButton;

    typedef void (^block)(MGButton *button);

    @interface MGButton : UIButton

    + (MGButton *)buttonWithFrame:(CGRect)frame type:(UIButtonType)type title:(NSString *)title addBlock:(block)tempBlock;

    @end

    (2)在.m文件中实现类方法

    #import "MGButton.h"

     @interface MGButton()

     //注意:给block变量写合成存取,一定要使用copy

    @property (nonatomic,copy) block myBlock;

     @end

     @implementation MGButton

     //利用block生成button对象

    + (MGButton *)buttonWithFrame:(CGRect)frame type:(UIButtonType)type title:(NSString *)title addBlock:(block)tempBlock {

         MGButton *button = [MGButton buttonWithType:type];

         [button setTitle:title forState:UIControlStateNormal];

        button.frame = frame;

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

         button.myBlock = tempBlock;

        return button;

    }

    //按钮的点击事件

     - (void)buttonCilcked:(MGButton *)button {

        

      //  NSLog(@"这里是buttonCilcked方法的内部");

        //触发按钮

        button.tag = 10;

        button.myBlock(button);

    }

    @end

    3.创建按钮,可以引入MGButton的头文件,通过类方法创建按钮即可

    代码如下:

    UIButton *btn = [MGButton buttonWithFrame:CGRectMake(0, 0, 200, 44) type:UIButtonTypeCustom title:@"按钮" addBlock:^(MGButton *button) {

                NSLog(@"按钮点击事件");

            }];

     [self.view addSubview:btn];

    4.其他形式的按钮,可以根据自己项目中的需要,自定义block方法的实现。

  • 相关阅读:
    系统综合实践 第1次实践作业
    Linq 中按照多个值进行分组(GroupBy,Count)
    敏捷开发综述
    心率
    二维数组 子数组和的最大值
    电梯调度算法
    课堂测试用例。。。
    分析文本文件中各单词出现的频率,并把频率最高的十个词打印出来
    dwz tree组件 取得所选择的值
    SQL Server -- 已成功与服务器建立连接,但是在登录过程中发生错误
  • 原文地址:https://www.cnblogs.com/zhangxiansen/p/5736425.html
Copyright © 2020-2023  润新知