【发布时间】:2018-02-22 16:42:04
【问题描述】:
我以编程方式向 UIView(通过 addSubview)添加了一些按钮。我在这个按钮上添加了一个带有函数的@selector。但是,它们出现在视图中,但是当我单击时,最后一个按钮仅起作用。
进入我的 .h:
@property (nonatomic, strong) UIButton * myButton;
进入我的.m
for(int i=0;i<5;i++){
myButton = [UIButton buttonWithType: UIButtonTypeRoundedRect];
myButton.frame = CGRectMake(55, 55*i, 30, 30);
myButton.tag = i;
myButton.backgroundColor = [UIColor redColor];
[myButton addTarget:self action:@selector(myaction:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:myButton];
}
-(void)myaction:(UIButton *)sender{
if(sender.tag == 0){
NSLog(@“uibutton clicked %ld", (long)sender.tag);
}
}
如何将动作添加到所有按钮?不只是最后一个......
【问题讨论】:
-
你每次都覆盖同一个变量?
-
那你的问题是什么?看到全部 5 个按钮了吗?是否为所有 5 个按钮调用了
myaction?它应该基于您发布的代码。 -
我可以看到所有 5 个按钮,但只有当我单击 5 号按钮时才会调用它。当我点击其他按钮时不调用
-
发生的事情一定比你展示的要多。正如 Larme 所提到的,一个明显的困惑是您对
myButton属性的奇怪使用。为什么要使用一个按钮属性来创建 5 个按钮?只需使用局部变量并摆脱该属性即可。 -
显示整个代码,肯定有东西干扰了按钮
标签: ios objective-c uibutton uicontrolevents addtarget