IOS如何用代码实现多个控件关联一个方法

比如有上下左右四个按钮,我四个按钮都连线move方法,这样不管点击四个中的哪个按钮都能执行move方法,这个效果代码要怎么实现?

四个按钮调用同一个方法,给每个按钮一个标记符。

使用代码的实现方式:按钮连线到控制器,每个都使用addtarget方法设置selector都是move方法就行.

SEL selector = NSSelectorFromString(@"move");
for (int i = 0; i < 4; i++) {
UIButton button = [[UIButton alloc] initWithFrame:CGRectMake(10 + 50((i + 1)/2),10 + 50*(i/2), 40, 20)];
[button setBackgroundColor:[UIColor blackColor]];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[button setTitle:[NSString stringWithFormat:@"button%d",i] forState:UIControlStateNormal];
[button addTarget:self action:selector forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}

    下面定义move方法就行了
    - (void)move {
NSLog(@"move");

}

给每个控件设置tag,在move方法中传入控件,通过判断控件tag值来执行对应代码的逻辑

设置不同的 tag 就可以了 move方法带参数 把tag值传过来 根据不同的tag值进行判断点了 哪个btn

给每个按钮都调用同一个方法且给每一个按钮做一个标记符

按钮都绑定move方法,move方法把按钮带过来,根据带过来的按钮的标题判断是点击那个按钮,或者给每个按钮加一个不一样的tag,通过tag判断是那个按钮

楼主的意思是让四个按钮又能点击又能移动吧,写一个继承UIButton的类做按钮基类,重写touchesMoved方法,在touchesMoved方法完成
移动,四个按钮的touchesMoved方法调用同一个move方法,在move方法完成移动。

addTarget: 指定同一个方法就可以了, 再根据button的tag或者自定义的字段,类型区分

调同一个方法就行了啊

每个按钮设置不同的tag值,调用同一方法时,判断tag进行不同操作就OK了。

- (void)viewDidLoad {
    [super viewDidLoad];
    UIButton *b1 = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 30)];
    b1.tag = 1; // 区分下
    // ...
    [b1 addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside];
    // b2...
}

- (void)move:(UIButton *)sender {
    //
    if (sender.tag == 1) {
        // blabla
    }
}

UIVIew下有一个属性叫tag,是一个NSInteger类型,你的4个btn可以设置不同tag,同时加上相同的target,这样在响应事件的时候,可以根据tag来区分是哪个按钮被点击了。

每个按钮添加tag,在点击方法里面把按钮根据tag做区分,分别处理不同按钮的点击事件。

按住control都拖到move这个方法就行了

给按钮添加tag值绑定统一方法,通过tag值来区分是哪一个按钮

和用storyboard一样,创建按钮的时候设置tag

    UIButton *btn=[[UIButton alloc] init];
        [btn setTitle:@"上" forState:UIControlStateNormal];
        [btn setTag:1];

然后注册点击事件,注意方法名中要有冒号,以便将按钮传入

    [btn addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside];

方法示例

    - (void)move:(UIButton *)sender
    {
        CGPoint cen=[[self Button] center];
        switch ([sender tag])
        {
            case 1:cen.y-=20;break;
            case 2:cen.x+=20;break;
            case 3:cen.y+=20;break;
            case 4:cen.x-=20;break;
        }
        [UIView animateWithDuration:1 animations:^{[[self Button] setCenter:cen];}];
    }

直接 把 每个按钮 拖线 到 这个方法不就行了

1.先写一个需要调用的方法

  • (void)move { nslog(@"---"); } 2.4个按钮调用同一个方法 [button1 addTarget:target action:move forControlEvents:UIControlEventTouchUpInside]; [button2 addTarget:target action:move forControlEvents:UIControlEventTouchUpInside]; ...

每个控件设置tag就行,我经常这么干