• 首页
  • 关于
    • 翟留闯 photo

      翟留闯

      interesting coding,easy life

    • 关于我
    • Email
    • Github
    • Weibo
  • 文章
    • 所有文章
    • 所有标签
  • 项目

iOS 让按钮事件可以携带多个参数

22 Jun 2016

Reading time ~1 minute

利用ObjC关联


        NSDictionary *param = @{@"name":@"小明",@"age":@"25",@"favorite":@"eat"};//想要传的参数

        UIButton *clickButton = /*...*/ create  button  
        [clickButton addTarget:self action:@selector(testClick:) forControlEvents:UIControlEventTouchUpInside];

        objc_setAssociatedObject(clickButton, "param", param, OBJC_ASSOCIATION_RETAIN_NONATOMIC);   //参数(按钮,参数key,参数对象,关联策略)


        //测试方法
        - (void)testClick:(UIButton *)sender{
            NSDictionary *param = objc_getAssociatedObject(sender, "param");        //取参
            NSLog(@"first: %@",param);
        }



        /*
        打印结果:
        2016-06-22 10:34:45.879081+0800 TestProject[3097:222603] param: {
            age = 25;
            favorite = eat;
            name = "小明";
        }
        */


        tip:别忘记导入runtime
        
        #import <objc/runtime.h>




iOS小技巧