Ios 如何选择Uibutton

Ios 如何选择Uibutton,ios,iphone,objective-c,uibutton,Ios,Iphone,Objective C,Uibutton,我有一个ui按钮,当我选择该按钮时,该按钮仍处于选中状态。这是我的密码: - (IBAction)cloudclick:(UIButton *)sender { UIImage *bgImage = [UIImage imageNamed:@"black_cloud.png"]; UIButton *tmpButton = (UIButton *)[self.view viewWithTag:sender.tag]; [tmpButton setBackgroundIma

我有一个
ui按钮
,当我选择该按钮时,该按钮仍处于选中状态。这是我的密码:

- (IBAction)cloudclick:(UIButton *)sender {
    UIImage *bgImage = [UIImage imageNamed:@"black_cloud.png"];
    UIButton *tmpButton = (UIButton *)[self.view viewWithTag:sender.tag];
    [tmpButton setBackgroundImage:bgImage forState:UIControlStateSelected];

} 

但当我单击按钮时,它不会保持选中状态。它会更改背景,但不会保留为选定按钮

您必须在代码后写一行

- (IBAction)cloudclick:(UIButton *)sender {
    ...
    [tmpButton setSelected:YES];
}
使用这行代码

sender.selected=!sender.selected;

并在alloc时为差异状态设置不同的图像(如果您正在从代码创建按钮),否则从xib设置图像。

各种状态:UIControlStateNormal、UIControlStateSelected和(UIControlStateSelected | UIControlStateHighlighted)实际上都是不同的。如果希望阴影图像同时应用于(仅)高亮显示状态和高亮显示+选定状态,则还必须设置:

[button setBackgroundImage: bgImage forState:(UIControlStateHighlighted | UIControlStateSelected)]

仅为
UIControlStateNormal
设置图像。为什么
UIButton*tmpButton=(UIButton*)[self.view view withtag:sender.tag]
您已经有了
ui按钮
,就像它是
发送者
一样。你又不是在复制什么东西。我会删除这一行,只使用
sender
我已经从Xib创建了一个按钮,在这里,它已经是一个背景图像集。现在,我希望当选择该按钮时,它会更改为另一个图像。如果我将图像放入“状态配置”中的Xib按钮选定属性中,它不会显示所选图像使用
[tmpButton setSelected:YES]用于保留selected@Ron这并不能解释为什么需要额外的毫无意义的代码行。您只需将
tmpButton
替换为
sender