我正在努力找到这样做的最佳方法。我在视图控制器上有5个自定义按钮,如果单击它,我会尝试使按钮保持突出显示。我知道怎么做但我试图只允许一次突出显示1个按钮。因此,如果用户单击某个按钮并突出显示该按钮,但单击另一个按钮,则单击的最新按钮将保持突出显示,而之前的按钮将不会突出显示。什么是实现这一目标的最佳方式?
答案 0 :(得分:3)
您应该保留对所有按钮的引用(例如,如果您使用IB,则在您的代码中包含所有按钮的@property (nonatomic, strong) IBOutlet UIButton *button1;
链接)。
然后将所有按钮链接到相同的方法,按下按钮。我称之为buttonPressed
。
像这样强迫:
- (IBAction)buttonPressed:(id)sender {
UIButton *buttonPressed = (UIButton*)sender;
NSArray *buttons = [NSArray arrayWithObjects:_button1, _button2, _button3, nil];
bool buttonIsHighlighted = NO;
// Check if a button is already highlighted
for (UIButton *button in buttons) {
if (button.highlighted) {
buttonIsHighlighted = YES;
}
}
// If a button is highlighted, un-highlight all except the one pressed
// If no button is highlighted, just highlight the right one
if (buttonIsHighlighted) {
for (UIButton *button in buttons) {
if (buttonPressed == button) {
buttonIsHighlighted = YES;
} else {
button.highlighted = NO;
}
}
} else {
buttonPressed.highlighted = YES;
}
}
我无法测试此代码,但我很确定它应该可行。如果出现问题,请告诉我。
答案 1 :(得分:0)
解决方案1:
将按钮放在NSArray
中,当用户点击按钮时,检查是否突出显示了另一个按钮。如果YES
,则取消突出显示并突出显示按下的那个。如果是NO
,请直接突出显示按下的那个。
解决方案2:
您可以将突出显示的按钮保存在@interface
或@property
中声明的全局变量中。当用户点击新的时,不会突出显示前一个。