我的 xib 中有 17 个按钮。我已将它们的标签值设置为 1 到 17。
有人可以告诉我,如何将所有 17 个按钮与 .h 中的一个变量名连接起来,并在 .m 中获取一个带有标签值的特定按钮。
谢谢
不,根据我的经验,这是不可能的。IBOutlet 即Interface Builder Outlet 总是指界面组件(如按钮)和界面中的变量(如IBOutlet UIButton *myButton)之间的单个连接。这种一对一的关系。
需要有一个IBOutlet
每个按钮,因此您需要创建所有 17 个按钮。将按钮单独连接到插座,然后如果您需要将它们放入数组中,则可以将它们放入初始化程序中的数组中。
不过,您可以节省IBAction
方法:制作一个这样的方法
-(IBAction)buttonClicked:(id)sender {
}
您可以将此方法连接到所有按钮,并查看标签(id)sender
以确定哪个按钮调用您的操作。
我刚刚对此进行了测试,并且我知道如果您选择情节提要中的所有按钮,并控制将它们拖动到助理编辑器中的适当控制器,您可以创建代表所有按钮的插座集合。结果代码是:
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttons;
您不能只引用 17 个按钮,但可以将一种方法分配给 17 个按钮,如 @dasblinkenlight 所说
您只需将IBAction
方法设置为所有按钮单击事件并使用标签值即可访问所需的按钮
-(IBAction)buttonClicked:(id)sender {
int j = [sender tag];
NSLog(@"Clicked Button %i", j);
}