ios - 选择和取消选择按钮集合
问题描述
我有三个名为One, Two,
和的按钮,Three,
以及一个buttonPressed
用于收集这三个按钮的函数,如下所示。
var btnTag = [Int]()
@IBAction func buttonPressed(_ sender: UIButton) {
guard let button = sender as UIButton? else { return }
if(btnTag.contains((sender as AnyObject).tag!))
{
if let index = btnTag.index(of: (sender as AnyObject).tag!)
{
btnTag.remove(at: index)
}
}
else
{
btnTag.append((sender as AnyObject).tag!)
}
if !button.isSelected {
button.isSelected = true
button.setTitleColor(.red, for: .normal)
}
else
{
button.isSelected = false
button.setTitleColor(.white, for: .normal)
}
}
我喜欢在单击时更改按钮的颜色,red
然后在单击其他按钮时将上一个按钮颜色更改为white
. 因此,如果我按下One,
我想One
成为red
,然后当我按下时Two
,我想Two
成为red
并且One
作为white
。我做了上述但它允许multiple selection
并且不能进行deselect
以前的更改。我该如何解决这个问题?
解决方案
您可以简单地创建UIButton
. 之后UIButton
从情节提要中分配所有三个标签。
@IBOutlet var buttons: [UIButton]!
使用上面的集合并将所有按钮与 Outlet 连接。还将下面的动作与所有按钮连接起来。
@IBAction func buttonPressed(_ sender: UIButton) {
buttons.forEach { $0.isSelected = false
$0.setTitleColor(.white, for: .normal)
}
buttons[sender.tag].setTitleColor(.red, for: .normal)
buttons[sender.tag].isSelected = true
}
推荐阅读
- php - 在另一个文件 php 中使用来自用户的输入
- grpc - 异步 C++ 客户端中 CompletionQueue 的混淆
- django - 为什么迁移不适用于 Django 中的外键?
- apache - XAMPP 中的反向代理(在 Windows 上)侦听内部端口 3000(Node js 服务器)
- kotlin - Kotlin:如何访问与扩展名同名的字段?
- javascript - 如何在 React 中正确实现后退按钮?
- c - 从缓冲区开始,全部在 C 中
- javascript - 递归,递归的应用示例
- javascript - 来自 json 数据的 Apex 图表堆积表
- python - python:ValueError:x和y必须相同大小