使用UIButton作为开关

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用UIButton作为开关相关的知识,希望对你有一定的参考价值。

我试图使用UIButton作为开关。点击按钮时,按钮图像应更改为(atcs.png),状态应为(.selected)。再次点击图像时,按钮图像应再次(actns.png),状态应为(.normal)。

以下是我当前代码的示例:

@IBOutlet weak var atcBtn: UIButton!

@IBAction func atcTapped(_ sender: UIButton) {
    if atcBtn.isSelected {
        atcBtn.setImage(UIImage(named: "atcs.png"), for:.selected)
    } else {
        atcBtn.setImage(UIImage(named: "atcns.png"), for:.normal)
    }
}

这种方式不起作用。有什么遗漏?试过这里列出的几乎所有解决方案,但没有。

答案

首先,将你的setImage代码移动到viewDidLoad。没有理由重复设置这些图像:

atcBtn.setImage(UIImage(named: "atcs.png"), for:.selected)
atcBtn.setImage(UIImage(named: "atcns.png"), for:.normal)

接下来,在点击按钮时切换isSelected属性:

@IBAction func atcTapped(_ sender: UIButton) {
    sender.isSelected = !sender.isSelected
}

另外值得注意的是 - 使用sender而不是硬编码atcBtn

以上是关于使用UIButton作为开关的主要内容,如果未能解决你的问题,请参考以下文章

Jquery if复选框是否已选中Bootstrap开关

Android:BottomNavigationView第一个片段开关超级延迟

在代码片段中包含类型转换

我们在swiftui中作为 UIButton(Sender: UIButton) 有啥? [关闭]

UIScrollView 上具有垂直间距的动态 UIButton

UIButton 作为子视图没有响应