4

我试图在按下按钮的那一刻更改图像按钮。发布后,我想回到原来的状态。

我在这里阅读了一些帖子,但它不起作用。

是否可以在没有编程的情况下在 GUI 中完成?

我试过这个:

-(IBAction) toggleUIButtonImage:(id)sender{
     if ([sender isSelected]) {
         [sender setImage:unselectedImage forState:UIControlStateNormal];
         [sender setSelected:NO];
     }else {
         [sender setImage:selectedImage forState:UIControlStateSelected];
         [sender setSelected:YES];
      }
 } 

但是我应该将什么样的发送者事件关联到函数 toggleUIButtonImage ?

谢谢

4

4 回答 4

12

您可以在界面生成器中通过为每个按钮状态配置提供不同的设置来完成此操作:

可用状态为:默认、选择和禁用

或者,您也可以使用 'UIButton' setImage:forState 方法更改代码中按钮的“设置”。

    [myButton setImage:highlightedImage forState:UIControlStateHighlighted];

通常,您应该通过如上所述“配置”按钮来完成此操作,而不是手动更改按钮的子视图作为对用户交互的响应。它对您不起作用的原因是 UIButton 固有的隐藏行为。您手动更改按钮的子视图作为对用户交互的响应,但您的更改将更改回按钮设置中定义的内容(根据按钮的状态)。所以看起来你的代码根本没有做任何事情。

于 2012-10-12T19:18:24.447 回答
4

ViewDidLoad方法中

设置属性

[[button setImage:[UIImage ImageNamed:@"unselectedImage.png"] forState: UIControlStateNormal]; 
[[button setImage:[UIImage ImageNamed:@"selectedImage.png"] forState: UIControlStateHighlighted ];
于 2012-10-12T18:06:13.933 回答
2

这可以通过 Interface Builder 完成,无需代码。

在 IB 中选择您的按钮,转到右侧边栏,将类型更改为自定义,确保状态配置为默认,然后在背景图像文本字段中输入“常规图像”参考的名称。

然后将状态配置更改为突出显示,并在背景图像文本字段中输入“按下图像”参考的名称。

于 2012-10-12T18:03:53.387 回答
1

在 IB 中,您可以将图像设置为按钮的突出显示(未选择)状态。那应该这样做。

查看 Utilities 窗格的 Button 部分,然后从 State Config 下拉菜单中选择 Highlighted。

于 2012-10-12T18:02:30.613 回答