所以我有这些按钮(3叠6个,18个),我想实现的是当我按下其中一个按钮时:
>
边框颜色
其他按钮将重置为其正常样式
但是我不想通过“isEnable”技巧禁用其他的(我只在这里找到了涉及isEnable的解决方案),我仍然希望它们被启用,我只是希望它们不要在按下时被我的自定义样式“突出显示”。
对于第一部分,也就是我在IBAction中所做的造型:
@IBAction func preset1Pressed(_ sender: UIButton) {
preset1.layer.borderColor = #colorLiteral(red: 0.4095217415, green: 0.6107917746, blue: 0.2774988226, alpha: 1)
preset1.layer.borderWidth = 0.42
preset1.setTitleColor(#colorLiteral(red: 0.4095217415, green: 0.6107917746, blue: 0.2774988226, alpha: 1), for: .normal)
}
这一小部分只是一个按钮,但我想如果我有18个按钮,我应该创建一个类或结构,而不是在每个iAction中复制它??还是func?
然后,对于第二部分,我不确定该如何操作,当按下一个按钮时,会反转到其他按钮的原始属性(在属性检查器中设置)。直观地说,我确信这是一个函数中所有18个按钮的数组的组合,它将循环通过所有数组,并可能对每个按钮进行布尔运算,以检查它们是否被按下,但我真的不知道语法会是什么。。。
还值得注意的是,如果我在同一按钮上按两次,我不希望它反转为其原始属性,而是保持“按下”样式。
提前感谢!
因此,Dilan本身并没有完全解决它,尽管我对它进行了实验,它实际上帮助我解决了它,除了我做了以下修改:
我创建了一系列按钮(称为presetsArray)并对它们进行了标记。然后,我创建了一个在所有iAction中调用的函数,但作为发送方调用。标记不起作用。我是这样计算函数的:
func styleButtons(tag: Int) {
let tag = tag
presetsArray.forEach{ (button) in
if button.tag == tag {
button.layer.borderColor = #colorLiteral(red: 0.4095217415, green: 0.6107917746, blue: 0.2774988226, alpha: 1)
button.layer.borderWidth = 0.42
button.setTitleColor(#colorLiteral(red: 0.4095217415, green: 0.6107917746, blue: 0.2774988226, alpha: 1), for: .normal)
view.layoutIfNeeded()
} else {
button.layer.borderColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
button.setTitleColor(#colorLiteral(red: 0.4978774786, green: 0.5020093918, blue: 0.5019439459, alpha: 1), for: .normal)
}
}
}
然后在预置X的每个IBAction中,我会这样调用它:
styleButtons(tag: presetX.tag)
在我的函数的else部分中,view.layoutIfNeeded()不会返回到我的原始样式,我只是使用了颜色选择器并选择了我的原始样式,我觉得这不是最合法的方式,但它很有效!
非常感谢蓝迪的帮助。
定义UIButton数组并在将其作为按钮标记添加到stack.set索引时添加按钮(0-17)
fileprivate var btnArray:[UIButton] = []
btn0.tag = 0
btnArray.appent(btn0)
然后,您可以像这样更改按钮单击功能中的样式
@IBAction func preset1Pressed(_ sender: UIButton) {
btnArray.forEach { (button) in
if button.tag == sender.tag {
preset1.layer.borderColor = #colorLiteral(red: 0.4095217415, green: 0.6107917746, blue: 0.2774988226, alpha: 1)
preset1.layer.borderWidth = 0.42
preset1.setTitleColor(#colorLiteral(red: 0.4095217415, green: 0.6107917746, blue: 0.2774988226, alpha: 1), for: .normal)
view.layoutIfNeeded()
}else{
//add default style
view.layoutIfNeeded()
}
}
}
不要在此之后添加 view.layoutIfRequired()
'导出默认函数 评级(道具){ 常量 [悬停,setHover] =使用状态(假); // 检查悬停状态常量 [com, setCom] = use 状态(假); //检查点击状态 }'我有五个评级按钮,我想在单击另一个按钮时取消单击已单击的按钮。通过点击我的意思是,当我点击其中一个按钮时,他们的样式主要改变为背景颜色,现在我希望当有人按下另一个评级时,我希望以前点击的按钮的样式恢复正常,新按下的
问题内容: 我希望我的应用程序中的按钮样式在按下时可以更改。做这个的最好方式是什么? 问题答案: 使用。 这里是一个例子:
} 完整错误消息:
问题内容: 可以更改按钮功能吗? 例如 点击,再点击一次 我已经尝试过类似,但没有结果。 我设法使叠加工作并在其中插入所需的数据。但是没有找到任何可以帮助我的帖子。我正在使用react-bootstrap。这是我的代码。 问题答案: 您可以尝试使用状态来存储颜色。也许这会让您想到解决问题的方法: 这是一个小提琴。
我以编程方式生成了许多按钮(一些按钮用于增加值,而另一些按钮用于减少值),当它们调整的值达到最大值或最小值时,我会禁用这些按钮。(即,当达到最大值时,“增加”按钮被禁用,而当达到最小值时,“减少”按钮被禁用。)除了禁用,我还将按钮状态设置为“按下”,以直观地指示已达到极限值,并且按钮不再工作。 我的按钮onClickListener的'增加'按钮看起来像这样: ClickListeners上相应的
我是一个新手,我正在尝试创建一个应用程序来在我的投资组合中使用。本质上,该程序是一个可以访问不同菜单的菜单(json文件:texas_pick.js,Breakth.js…),该程序旨在以按钮的形式显示菜单选项,按钮的详细信息从各自的json文件中检索。我面临的问题是,单击菜单选项时,会检索最后一个菜单项的数据。我将后端编程为只将商品名称和价格推送到数据库,而前端则检索这些数据并将其显示在表上。检