Мое предложение состоит в том, чтобы управлять изображениями в Интерфейсном Разработчике через Конфигурацию состояния (Default
/ Selected
)
Затем назначьте уникальный тег, начинающийся со 100, каждой кнопке и установите значение isSelected
вIBAction для соответствующего члена структуры в выражении switch
:
@IBAction func buttonPressed(_ sender: UIButton) {
switch sender.tag {
case 100: myInterests.architecture = sender.isSelected
case 101: myInterests.art = sender.isSelected
...
default: break
}
}
В качестве альтернативы используйте собственный KVC Swift с WriteableKeypath
let keypaths : [WritableKeyPath<Interests,Bool>] = [\.architecture, \.art, \.fashion, \.history, \.localCulture, \.music, \.nature, \.shopping, \.sport, \.anything]
@IBAction func buttonPressed(_ sender: UIButton) {
let index = sender.tag - 100
let keypath = keypaths[index]
myInterests[keyPath: keypath] = sender.isSelected
}