分享

代码实现UIButton,添加点击事件,怎么能获取sender?

 quasiceo 2015-01-25
故事是这样的,很久很久以前,有7个可爱的小UIbutton,是再代码里,是用
    NSMutableArray *buttonsArray = [NSMutableArray array];
    for (int i = 0; i < 7; i ++) {
        UIButton *button = [[UIButton alloc]init];
        //...略去给button设置frame或者layer上的属性的代码
        [buttonsArray addObject:button];
        [button addTarget:self action:@selector(clickHandler)
         forControlEvents:UIControlEventTouchUpInside];
    }
  这样的创建出来的,然后这个7个按钮,击之后都需要执行clickHandler这个方法,于是有了上面:
   [button addTarget:self action:@selector(clickHandler)
        forControlEvents:UIControlEventTouchUpInside];

可是呢,这个clickHandler这个方法太调皮了,它非要打一顿那个调用它的button,这时候问题就出来了,怎么能找到是buttonArray中的哪个button调用的clickHandler呢?


后来我发现,把clickHandler改成:带一个参数的函数,怎这个参数就默认是sender了?这是为什么?好神奇

    buttonsArray = [NSMutableArray array];
    for (int i = 0; i < 7; i ++) {
        UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(i*30, 100, 20, 20)];
        //...略去给button设置frame或者layer上的属性的代码
        button.layer.borderColor = [[UIColor redColor] CGColor];
        button.layer.borderWidth = 3;
        [self.view addSubview:button];
        
        [buttonsArray addObject:button];
        [button addTarget:self action:@selector(click:)
         forControlEvents:UIControlEventTouchUpInside];
    }



-(void)click:(UIButton *)a{
    int num = [buttonsArray indexOfObject:a];
    NSLog(@"%d", num);
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多