【问题标题】:Change image when a button is clicked using Objective-C使用 Objective-C 单击按钮时更改图像
【发布时间】:2019-02-07 02:53:27
【问题描述】:

单击按钮时,我试图在两个不同的图像之间切换。以下是我到目前为止编写的代码。但是,这只会显示一张图片,不会在它们之间切换。

-(IBAction)show {

    BOOL img = true;

    if (img = true) {
    UIImage *img1 = [UIImage imageNamed:@"UnCheck.png"];
    [imageview setImage:img1];
        }
    else {
        UIImage *img = [UIImage imageNamed:@"Check.png"];
        [imageview setImage:img];
    }
}

【问题讨论】:

  • Setting an image for a UIButton in code 的可能重复项只需将状态更改为您需要的状态即可。
  • @kerberos 我遇到的问题是,如果 if 语句设置为“false”,代码总是运行 else
  • 问题是什么?

标签: ios objective-c arrays


【解决方案1】:

您的代码有几个问题:

首先,img 是您点击处理程序中的一个局部变量,因此每次该函数运行时,它都会被设置为 true

其次,您的 if 语句实际上包含一个赋值 (=) 而不是比较 (==),所以即使 img 还不是 true,它也会在您执行 @ 987654328@声明。

所有这一切都意味着您的图像将始终为UnCheck.png

您需要在函数外部使用属性,以便正确跟踪状态。 img 也是一个很差的变量名,checkedisChecked 可能更好。

然后您的按钮处理方法只需要切换此属性并设置适当的图像。

@property BOOL isChecked;

-(IBAction)show {
    self.isChecked = !self.isChecked;

    NSString *imageName = self.isChecked ? @"Check.png":@"UnCheck.png";
    UIImage *img = [UIImage imageNamed:imageName];
    [imageview setImage:img];
 }

【讨论】:

  • 感谢您的澄清!帮了我很多
  • 您也可以使用 image isHighlighted 属性对其进行更多重构。在 imageview 初始化的地方添加以下代码。 UIImageView(image: UIImage?, highlightedImage: UIImage?) 并在下面使用 (IBAction)show imageview.isHighlighted = self.isChecked
猜你喜欢
  • 2013-11-05
  • 1970-01-01
  • 2018-04-14
  • 2017-01-21
  • 2012-01-21
  • 2011-12-04
  • 2012-10-07
  • 1970-01-01
相关资源
最近更新 更多