3组件UIPickerView使3位数值

时间:2016-03-17 21:07:28

标签: ios swift uipickerview

我有一个3分量UIPickerWheel,允许用户从0到199选择一个3位数字,我想最终将该数字存储为变量。

当我测试构建应用程序时,数百列按预期工作。但是我的单个数字列以某种方式链接到我的十列,当我更新单个数字列时,控制台打印该数字的十列版本(001打印10而不是1)

导致此问题的原因是什么?如何修复它?

提前致谢!

编辑:我更新了我的数组并从单位数列中删除“0”似乎是一个快速修复,但我仍然很好奇为什么这是一个问题。

import UIKit

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

    @IBOutlet weak var numberPicker: UIPickerView!

    var pickerData = [[String]]()

    var hundredsColumn = "0"
    var tensColumn = "0"
    var singleDigits = "0"

    override func viewDidLoad() {
        super.viewDidLoad()

        self.numberPicker.delegate = self
        self.numberPicker.dataSource = self

        pickerData = [
            ["0","1"],
            ["0","1","2","3","4","5","6","7","8","9"],
//Original  ["0","1","2","3","4","5","6","7","8","9"],
            ["1","2","3","4","5","6","7","8","9"],
        ]

    }

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

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return pickerData[component].count
    }

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

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if pickerData[component] == pickerData[0] {
            hundredsColumn = pickerData[0][row]
        }
        else if pickerData[component] == pickerData[1] {
            tensColumn = pickerData[1][row]
        }
        else {
            singleDigits = pickerData[component][row]
        }

        let total = (Int(hundredsColumn)! * 100 + (Int(tensColumn)! * 10) + (Int(singleDigits)! * 1)
        print(total)
    }
}

1 个答案:

答案 0 :(得分:0)

这是有效的,没有必要将字符串转换为整数并添加你直接追加字符串然后你可以将其转换为整数

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
    {
        if pickerData[component] == pickerData[0] {
            hundredsColumn = pickerData[0][row]
        }
        else if pickerData[component] == pickerData[1] {
            tensColumn = pickerData[1][row]
        }
        else {
            singleDigits = pickerData[component][row]
        }
        let totalIs = hundredsColumn + tensColumn + singleDigits
        print("\(totalIs)")
    }