按下时切换UIButton状态,就像开关一样。

7
-(void)setState:(id)sender
{
    UIButton* button = (UIButton*)sender;
    BOOL buttonBool = ([button state]==selected : YES ? NO);
    [sender setSelected:buttonBool++];

}

这是我的想法,但我无法确定调用该功能的按钮的实际状态。 任何调用此功能的按钮都应在默认状态和选定状态之间切换,以便其像开关一样工作。我只需要有自己的背景图形,否则我就会使用开关。 那么,有人可以帮我纠正我的想法吗?
2个回答

20

尝试这种方式:

-(void)setState:(id)sender
{
    UIButton* button = (UIButton*)sender;
    button.selected = !button.selected;
}

哦..这太简单了!我认为这个可以按照我的意愿工作,谢谢。我明天会试一下。消息:您需要等待8分钟才能接受答案,所以明天我会接受它。 - nico
是的,这是编程的聪明方式 +1! - Tomas Sykora
2
我不明白为什么苹果没有将这个功能作为 UIButton 的内置方法。这是一个非常普遍的用例,一个简单的 - (void)toggleSelected:(UIButton *)sender 方法可以让很多人的工作变得更加轻松。对于那些需要切换大量按钮状态的应用程序,创建一个名为 UIButton+Toggle 的类别并扩展 UIButton 来添加此功能可能会有意义。 - rfj001

1

Swift 3 的方式:

func setState(button: UIButton) {
    button.isSelected = !button.isSelected
}

感谢 @nadi-hassan 提供的 Swift 3 提示。

1
Swift 3将"selected"重命名为"isSelected"。 - Nadi Hassan
感谢 @NadiHassan - finneycanhelp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接