开发者

UIControl - changing assigned selectors: addTarget & removeTarget

开发者 https://www.devze.com 2022-12-15 05:53 出处:网络
I\'m using 10 buttons in my interface and need, from time to time, to change the button\'s selector. Am I required to use:

I'm using 10 buttons in my interface and need, from time to time, to change the button's selector.

Am I required to use:

-(void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents 

开发者_开发技巧before I change the selector or can I just use:

-(void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents 

I'm concerned that if I change the selector using the addTarget: method sans the removeTarget: method that I'll essentially "stack up" selectors for my UIButton to fire when it is pressed.


Yes you should always remove the previously add target before assigning the new target to the button. Like this---

UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [btn setFrame:CGRectMake(50, 50, 200, 50)];

    [btn setTag:101];
    [btn addTarget:self action:@selector(method1) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];


    btn = (UIButton *)[self.view viewWithTag:101];
    [btn removeTarget:self action:@selector(method1) forControlEvents:UIControlEventTouchUpInside];
    [btn addTarget:self action:@selector(method2) forControlEvents:UIControlEventTouchUpInside];

now if you do this

btn = (UIButton *)[self.view viewWithTag:101];
        [btn addTarget:self action:@selector(method2) forControlEvents:UIControlEventTouchUpInside];

then both the methods method1 and method2 will be called.

Hope this helps.


Yes, you will need to remove the old target/action or both the old and new actions will be performed.

0

精彩评论

暂无评论...
验证码 换一张
取 消