如何在 swift 中制作单选按钮 3

How make radio buttons in swift 3

我正在创建一个 Swift iOS 应用程序,我必须在其中显示接受水平和垂直方式的单选按钮。我在 GitHub 找到了一个库,它看起来是我问题的解决方案,但它只显示水平方向(并排方向),我需要垂直方向(即在另一个单选按钮下方显示一个单选按钮)。任何指导将不胜感激。提前谢谢你。

Link : https://github.com/sag333ar/SKRadioButton

您分享的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
        }
    }

希望这能帮助您减少代码。