如何在 swift 中制作单选按钮 3
How make radio buttons in swift 3
我正在创建一个 Swift iOS 应用程序,我必须在其中显示接受水平和垂直方式的单选按钮。我在 GitHub 找到了一个库,它看起来是我问题的解决方案,但它只显示水平方向(并排方向),我需要垂直方向(即在另一个单选按钮下方显示一个单选按钮)。任何指导将不胜感激。提前谢谢你。
您分享的link已经可以制作垂直按钮了,在使用中描述了在水平按钮中使用它UIStackView
您可以添加多个按钮with-in UIStackView,然后根据您的需要将UIStackView 的轴属性设置为水平或垂直。要使单选按钮设置按钮图像并给出标题,然后设置左侧标题插入以在按钮图像和标题之间制作一些 space。
对于这个简单的东西不需要使用任何Third-party库你可以使用UIButton
像这样.
import UIKit
class RootViewController: UIViewController {
@IBOutlet weak var btnMale: UIButton!
@IBOutlet weak var btnFemale: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func btnTapped(_ sender: UIButton) {
if sender.currentImage == UIImage(named: "radio_unchecked"){
sender.setImage(UIImage(named: "radio_checked"), for: .normal)
}else{
sender.setImage(UIImage(named: "radio_unchecked"), for: .normal)
}
}
在 Storyboard 中拖放两个 UIButton
连接它的 IBOutlet
然后用 Same Action Outlet 连接到两个按钮。
添加图片,还有一件事按钮标题设置为添加前Space像这样。
像这样从 Storyboard 更改对齐方式。
这就是你的输出:
我相信这是更少的代码解决方案!
@IBOutlet weak var btn1: UIButton!
@IBOutlet weak var btn2: UIButton!
.
.
.
.
@IBOutlet weak var btn10: UIButton!
var arrButtons:[UIButton] = []
override func viewDidLoad() {
super.viewDidLoad()
arrButtons.append(btn1)
arrButtons.append(btn2)
//so, on
}
转到按钮 属性 并为 UIButton 设置状态配置 属性 选择的图像,这样,当 isSelected 属性 为真时它将替换图像。
还使用 "btnRadioPrressed" 方法将 touchUpInside 事件绑定到每个按钮。
@IBAction func btnRadioPrressed(sender: UIButton) {
for btn in arrButons {
btn.isSelected = false
}
if let index = arrButons.index(where: { [=11=] == sender }) {
arrButons[index].isSelected = true
}
}
希望这能帮助您减少代码。
我正在创建一个 Swift iOS 应用程序,我必须在其中显示接受水平和垂直方式的单选按钮。我在 GitHub 找到了一个库,它看起来是我问题的解决方案,但它只显示水平方向(并排方向),我需要垂直方向(即在另一个单选按钮下方显示一个单选按钮)。任何指导将不胜感激。提前谢谢你。
您分享的link已经可以制作垂直按钮了,在使用中描述了在水平按钮中使用它UIStackView
您可以添加多个按钮with-in UIStackView,然后根据您的需要将UIStackView 的轴属性设置为水平或垂直。要使单选按钮设置按钮图像并给出标题,然后设置左侧标题插入以在按钮图像和标题之间制作一些 space。
对于这个简单的东西不需要使用任何Third-party库你可以使用UIButton
像这样.
import UIKit
class RootViewController: UIViewController {
@IBOutlet weak var btnMale: UIButton!
@IBOutlet weak var btnFemale: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func btnTapped(_ sender: UIButton) {
if sender.currentImage == UIImage(named: "radio_unchecked"){
sender.setImage(UIImage(named: "radio_checked"), for: .normal)
}else{
sender.setImage(UIImage(named: "radio_unchecked"), for: .normal)
}
}
在 Storyboard 中拖放两个 UIButton
连接它的 IBOutlet
然后用 Same Action Outlet 连接到两个按钮。
添加图片,还有一件事按钮标题设置为添加前Space像这样。
像这样从 Storyboard 更改对齐方式。
这就是你的输出:
我相信这是更少的代码解决方案!
@IBOutlet weak var btn1: UIButton!
@IBOutlet weak var btn2: UIButton!
.
.
.
.
@IBOutlet weak var btn10: UIButton!
var arrButtons:[UIButton] = []
override func viewDidLoad() {
super.viewDidLoad()
arrButtons.append(btn1)
arrButtons.append(btn2)
//so, on
}
转到按钮 属性 并为 UIButton 设置状态配置 属性 选择的图像,这样,当 isSelected 属性 为真时它将替换图像。
还使用 "btnRadioPrressed" 方法将 touchUpInside 事件绑定到每个按钮。
@IBAction func btnRadioPrressed(sender: UIButton) {
for btn in arrButons {
btn.isSelected = false
}
if let index = arrButons.index(where: { [=11=] == sender }) {
arrButons[index].isSelected = true
}
}
希望这能帮助您减少代码。