ios - 将按钮添加到 UIPickerView 以转到下一个数字

标签 ios swift uibutton int uipickerview

我的 pickerView 上有 3 列,它代表一个 3 位数。是否有任何功能可以添加到 UIButton 来使轮子转动?例如,当它显示“119”时,按下 UIButton,它应该转到“120”。这是我到目前为止所拥有的:

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {

@IBOutlet weak var label: UILabel!
@IBOutlet weak var pickerView: UIPickerView!

let numbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 3
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return numbers[row]
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return numbers.count
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

    let val1 = numbers[pickerView.selectedRow(inComponent: 0)]
    let val2 = numbers[pickerView.selectedRow(inComponent: 1)]
    let val3 = numbers[pickerView.selectedRow(inComponent: 2)]

    label.text = "\(val1) \(val2) \(val3)"
}

最佳答案

这是您的代码,已简化。 buttonPressed 将导致 pickerView 转到下一个数字。当它达到 999 时,它又变回 000。

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var pickerView: UIPickerView!

    override func viewDidLoad() {
        super.viewDidLoad()

        changeLabelText()
    }

    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 3
    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return "\(row)"
    }

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return 10
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        changeLabelText()
    }

    fileprivate func num(_ i: Int) -> Int {
        return pickerView.selectedRow(inComponent: i)
    }

    @IBAction func buttonPressed() {
        let currentNum = num(0) * 100 + num(1) * 10 + num(2)
        let nextNum = currentNum + 1

        pickerView.selectRow(nextNum % 1000 / 100, inComponent: 0, animated: true)
        pickerView.selectRow(nextNum % 100 / 10, inComponent: 1, animated: true)
        pickerView.selectRow(nextNum % 10, inComponent: 2, animated: true)

        changeLabelText()
    }

    fileprivate func changeLabelText() {
        label.text = "\(num(0)) \(num(1)) \(num(2))"
    }
}

关于ios - 将按钮添加到 UIPickerView 以转到下一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46183030/

相关文章:

ios - 如何在 Xcode 4.2 中包含低于 4.3 的 iOS SDK

swift - UICollectionView 自定义布局

ios - 使用自动布局使 UIView 和内容扩展以填充 UIToolbar 中的可用水平空间

ios - 如何复制ios日历

objective-c - 将按钮(UIButton)添加到使用 drawRect : 绘制的自定义 tableview 单元格

ios - 表中单元格的自定义组件

ios - hoSTLess XCTest 目标能否收集代码覆盖率数据?

ios - swift 2 : My code saves the data(The item added shows in the list) but as soon as I force close the app it deletes all data?

ios - UIButton 移动到自定义单元格中的 Storyboard

ios - 如何在 Swift 3 中将 unicode 表情符号设置为 UIButton 的标题?