Ios 更换开关的按钮

Ios 更换开关的按钮,ios,swift,button,click,uiswitch,Ios,Swift,Button,Click,Uiswitch,我有一个由颜色列表组成的表视图控制器。我希望用户能够明星他或她最喜欢的颜色。我目前正在使用开关来实现这一点,但我想要更具视觉吸引力的东西。我想一个按钮可以用。但是,我希望按钮具有与开关类似的属性(例如:isOn属性)。我该怎么做 ui按钮s还具有类似开关的功能 在IB中,在Interface Builder中为“所选状态配置”设置不同的映像 然后,将其添加到按钮的@IBAction(其中“button”是按钮的名称): 这就是存在子类化的原因。以下是一个未经测试的示例: class StarBu

我有一个由颜色列表组成的表视图控制器。我希望用户能够明星他或她最喜欢的颜色。我目前正在使用开关来实现这一点,但我想要更具视觉吸引力的东西。我想一个按钮可以用。但是,我希望按钮具有与开关类似的属性(例如:isOn属性)。我该怎么做

ui按钮
s还具有类似开关的功能

在IB中,在Interface Builder中为“所选状态配置”设置不同的映像

然后,将其添加到按钮的
@IBAction
(其中“button”是按钮的名称):


这就是存在子类化的原因。以下是一个未经测试的示例:

class StarButton : UIButton {

    override var isSelected: Bool {

        willSet {

            let image = UIImage(named: newValue ? "FilledStar" : "EmptyStar")
            self.setImage(image, for: .normal)
        }
    }
}

您可以使用tableviewcell的accessoryType属性。您可以将其设置为。选中标记

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark
}  
这将如下图所示

我问了这个问题后意识到了这一点。这是最简单的解决方案和公认的答案。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark
}