【问题标题】:UIButton selected state change imageUIButton 选中状态改变图片
【发布时间】:2015-07-15 13:37:27
【问题描述】:

我知道这应该很简单,但是因为我真的在这里和谷歌上环顾四周而没有让我的代码工作,所以我会问。是的,我检查了相关问题,但它们不起作用...

我只是想在按下按钮时更改按钮的图像。

这是我的头文件:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (strong, nonatomic) IBOutlet UIButton *myButton;

@end

还有我的实现文件:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

    [self.myButton setImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
    [self.myButton setImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateSelected];

}
@end

按钮是在 Main.storyBoard 中构建和连接的,我也尝试在属性检查器中执行此操作,但都没有成功!

请注意,我不是在寻找如何做高亮状态而是选择。

【问题讨论】:

  • 试试不带“.png”的图片名称,看看图片是否真的存在
  • 我已尝试删除“.png”,由于图像适用于“正常状态”,因此它应该适用于选定状态
  • 添加图片后尝试添加代码:self.myButton.selected = YES;
  • 不,没用 :)
  • 我已经检查过了,谢谢。但是选择状态时它没有改变图像...

标签: ios objective-c uibutton


【解决方案1】:

我相信您需要做的是在点击按钮时将按钮的状态设置为选中。大概是这样的:

-(IBAction)buttonTapped:(id)sender {
    if(self.myButton.selected)
        [self.mybytton setSelected:NO];
    else
        [self.mybutton setSelected:YES];
}

【讨论】:

    【解决方案2】:

    您需要从界面构建器中为每个状态设置图像,如果需要,您无需添加代码:

    选择State ConfigDefault,然后选择一张图片

    选择State ConfigSelected,然后选择一张图片

    现在来测试按钮的每个状态:

    您可以对背景图像执行相同的操作,只需选择参数"Background"

    【讨论】:

    • 您是否尝试设置背景图像而不是图像
    • 是的,我已经尝试了我知道的界面生成器中的所有选项......包括这个
    • 是的,我可以测试按钮是否进入选定模式并且图像发生变化 - 是的,它在界面生成器中发生了变化,但是当运行应用程序并按下按钮时,它的行为类似于“突出显示”而不是“选定”...
    • 我不知道为什么还没有人赞成这个答案!感谢@Aladin 提供如此简单的解决方案,而不是从代码中设置每个图像
    【解决方案3】:

    在状态配置的 IB 构建器中更改为您需要的任何图像,并向该按钮添加一个操作,并在其中添加这行代码,如 @Aladin 所说。

       @IBAction func btnPressed (_ sender: UIButton) {
    
        // If you want to change it for selected state when tapped. 
        sender.isSelected = !sender.isSelected
    
    }
    

    【讨论】:

      【解决方案4】:

      您有什么方法可以控制单击按钮的时间吗?如果是,请在下面的行中输入:

      [self.myButton setSelected:YES];
      [self.myButton setImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateSelected];
      

      【讨论】:

      • - (IBAction)buttonPressed:(id)sender { [self.toggleChange setSelected:YES]; [self.toggleChange setImage:[UIImage imageNamed:@"info-22.png"] forState:UIControlStateSelected]; } 不起作用
      【解决方案5】:

      为什么不尝试将背景图片默认设置为“normal.png”;

      [self.mybutton setBackgroundImage:[UIImage imageNamed:@"normal.png"]];
      

      并在执行按钮时切换到“selected.png”。

      [self.mybutton setBackgroundImage:[UIImage imageNamed:@"selected.png"]];
      

      【讨论】:

      • 错误:“UIButton”没有可见的@interface 声明选择器“setBackgroundImage:”
      猜你喜欢
      • 2011-08-01
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      相关资源
      最近更新 更多