你的实现完全没问题。如果您愿意,您可以UIButton
在 IB 中给出 'sa 标记值,然后组合这些方法(将它们的两个操作设置为相同的方法):
- (IBAction)buttonPressed:(UIButton *)button {
if (button.tag == 0) {
self.firstLabel.text = rightNow;
} else if (button.tag == 1) {
self.secondLabel.text = rightNow;
}
}
您还可以使用开关:
switch (button.tag) {
case 0:
self.firstLabel.text = rightNow;
break;
case 1:
self.secondLabel.text = rightNow;
break;
default:
break;
}
我想这就是你所追求的。如果我误解了什么,请告诉我。
编辑:
鉴于您拥有其中的 9 个,我个人会稍微改变一下我的方法。您可以将它们全部放入一个数组并访问它们[self.myLabels[button.tag] setText:rightNow];
,但这仍然需要 9 个 IBOutlets。虽然没有问题,但其中很多。
您可以做的另一件事是给他们一个比相应按钮高 20 点的标签,然后在 IBAction 中执行类似的操作:
UIView *viewToChange = [self.view viewWithTag:button.tag+20];
// used to protect yourself since IB allows the multiple views to have the same tag
if ([viewToChange isKindOfClass:[UILabel class]]) {
((UILabel *)viewToChange).text = rightNow;
}
这很简单,但它确实将您的逻辑与按钮和标签的标签值紧密绑定。这样做的好处是简单的逻辑,并且所有 UILabel 都没有 IBOutlets!