ios - 使用 Objective-C 单击按钮时更改图像

标签 ios objective-c arrays

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

-(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];
    }
}

最佳答案

您的代码有几个问题:

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

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

所有这些意味着您的图像将始终为 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];
 }

关于ios - 使用 Objective-C 单击按钮时更改图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52126196/

相关文章:

iOS:ScrollView检测拖动进度

ios - 如何在动画过程中改变 CALayer 的颜色?

ios - 使用 UIAppearance 设置 UITableView 的背景颜色

ios - MoviePlayerController 上的 ShouldAutoplay

ios - 在 UITabBarController 之前呈现登录 View Controller

javascript - 生成所有可能的真/假组合

javascript - 只除以特定字符串出现的次数,而不是总长度(Javascript)?

objective-c - UIScrollView setContentSize 因未捕获的 NSRangeException 而崩溃

ios - UIButton 横跨 UIPageViewController 的所有页面

arrays - any 和 any[ ] 有什么区别?