如何让用户在具有多个 UIButtons 的视图中只选择一个自定义 UIButton?斯威夫特 3
Posted
技术标签:
【中文标题】如何让用户在具有多个 UIButtons 的视图中只选择一个自定义 UIButton?斯威夫特 3【英文标题】:How to make the user select only one custom UIButton in a view with multiple UIButtons? Swift 3 【发布时间】:2017-05-14 18:52:13 【问题描述】:我在这里要做的是,我希望用户在具有多个 UIButton 的视图控制器中选择一个自定义 UIButton,但是当用户选择一个 UIButton 时,我怎样才能使它成为可能,如果他想要选择另一个,用户单击的第一个 UIButton 将被取消选择。
如何让用户只选择一个 UIButton?如果一个 UIButton 被选中,另一个 UIButton 被选中,前者将被取消选中
【问题讨论】:
【参考方案1】:因此,您在按钮周围有某种边框,然后您可以遍历所有按钮并找到带有边框的按钮,将其删除,然后将边框设置为新选择的按钮。像这样的:
func buttonSelected(clickedButton: UIButton)
for case let button as UIButton in self.view.subviews
if button.layer.borderColor == UIColor.black.cgColor
// deselect it here by changing the border
button.layer.borderColor = UIColor.clear.cgColor
// select the clicked button
clickedButton.layer.borderColor = UIColor.black.cgColor
【讨论】:
【参考方案2】:有时很高兴知道选择了哪一个,所以我会做这样的事情。
var selectedButton: UIButton?
didSet
selectedButton?.layer.borderColor = UIColor.black.cgColor
func buttonSelected(sender: UIButton)
//Already selected check
guard selectedButton != sender else return
//Change current selected button properties
selectedButton?.layer.borderColor = UIColor.clear.cgColor
//Choose new selected button
selectedButton = sender
如果你想改变很多东西,我建议继承 UIButton 并在其中包含两个函数。 setSelected() 和 setUnselected() 那么它会像这样工作:
var selectedButton: SelectableButton?
func buttonTapped(sender: SelectableButton)
guard selectedButton != sender else return
sender.setSelected()
selectedButton?.setUnselected()
selectedButton = sender
编辑:我认为这是一个更好的解决方案,然后在所有子视图中执行 for 循环......
【讨论】:
以上是关于如何让用户在具有多个 UIButtons 的视图中只选择一个自定义 UIButton?斯威夫特 3的主要内容,如果未能解决你的问题,请参考以下文章