【问题标题】:How make radio buttons in swift 3如何在swift 3中制作单选按钮
【发布时间】:2018-08-01 08:52:16
【问题描述】:

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

链接:https://github.com/sag333ar/SKRadioButton

【问题讨论】:

  • 您可以创建一个 UIButton 数组,其中包含selected 状态的图像。一旦用户选择其中一个 - 遍历数组以取消选择其他按钮。顺便说一句,对于 iOS,UISegmentedControl 通常用作单选按钮。

标签: ios swift3


【解决方案1】:

我相信这是更少的代码解决方案!

@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设置状态Config属性选择图像,当isSelected属性为true时它将替换图像。

还使用“btnRadioPrressed”方法将 touchUpInside 事件绑定到每个按钮。

    @IBAction func btnRadioPrressed(sender: UIButton) {

        for btn in arrButons {
            btn.isSelected = false
        }
        if let index = arrButons.index(where: { $0 == sender }) {
            arrButons[index].isSelected = true
        }
    }

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

【讨论】:

    【解决方案2】:

    您分享的链接已经可以制作垂直按钮,在使用中它描述了在水平UIStackView中使用它

    【讨论】:

    • 当我使用水平 UIStackView 时,它会随机显示在视图中吗?我该怎么做?请帮帮我!
    • 给出stackview的宽度和高度约束,并从属性检查器设置分布到fillEqually
    【解决方案3】:

    您可以在 UIStackView 中添加多个按钮,然后根据您的要求将 UIStackView 的轴属性设置为水平或垂直。要使单选按钮设置按钮图像并给出标题,然后设置左侧标题插入以在按钮图像和标题之间留出一些空间。

    【讨论】:

    • 当我将 UIStackView 设置为水平时,它会随机显示在视图中吗?我该怎么做?请帮帮我!请给我一些示例代码
    【解决方案4】:

    对于这个简单的东西不需要使用任何第三方库,你可以通过使用来做到这一点 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)
        }
    }
    

    在情节提要中拖放两个UIButton 连接其IBOutlet,然后使用相同的操作插座连接到两个按钮。

    添加图片,还有一个按钮标题设置为像这样在空格前添加。

    像这样从情节提要中更改对齐方式。

    这就是你的输出:

    【讨论】:

    • 我有多个单选按钮(即 10 个按钮),所以需要 10 个标签?但是这段代码很难我需要更少的代码来输出!如何快速完成?
    • @Manohar 是的,您需要使用相同的方式为所有按钮提供标签,我认为我管理 15 个按钮,这是不使用任何第三方库的击球方式。并尽可能使用原生组件,避免第三方。
    猜你喜欢
    • 1970-01-01
    • 2017-12-01
    • 2017-05-23
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2020-01-12
    相关资源
    最近更新 更多