点击时选择/取消选择UIButton

ros*_*ump 6 objective-c uibutton ios xcode5

我有一个简单的问题,我似乎无法找到答案.

我有几个UIButtons存储在一个NSArray,有一个for循环设置button.selected = YES时,他们被轻拍.我需要在点击时取消选择相同的按钮,但我似乎无法在网上找到任何帮助.这是我的代码:

- (IBAction)buttonPressed:(UIButton *)sender {
    NSArray *buttons = [NSArray arrayWithObjects:_asbBtn, _vwfBtn, _bpBtn, _rtaBtn, _mslmBtn, _pbaBtn, _rcfBtn, _mspBtn, _wpBtn, _aawBtn, _ppiBtn, _convBtn, nil];

    // Select buttons
    for (UIButton *button in buttons) {
        if (button == sender) {
            button.selected = YES;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

也许这不是最好的方法,对不起,如果我错过了一些简单的事情.我尝试过添加,else { button.selected = NO;但这只允许选择一个按钮并取消选择所有其他按钮.有人可以指导我正确的方向,在点击时取消选择当前选定的按钮.

Ima*_*tit 13

如果要在每次单击实例时在选定未选定状态之间切换UIButton,可以使用下面的Objective-C代码:

- (IBAction) buttonPressed:(id)sender {
    if ([sender isSelected]) {
        [sender setSelected: NO];
    } else {
        [sender setSelected: YES];
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,您可以使用更短的实现获得相同的结果:

- (IBAction) buttonPressed:(id)sender {
    [sender setSelected: ![sender isSelected]];
}
Run Code Online (Sandbox Code Playgroud)

使用Swift 3,您将使用以下代码:

@IBAction func buttonPressed(_ sender: UIButton) {
    sender.isSelected = !sender.isSelected
}
Run Code Online (Sandbox Code Playgroud)