从 UIpickerview 中提取值作为变量

extract value from UIpickerview as variable

所以我有一个 UIpickerview 的代码,我想将选择的值作为变量供以后使用,我尝试使用变量重力但它说 "initialisation of variable gravity was never used...." 这是我的代码:

 var g = ["9.807", "3.711"]
func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

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

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

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    var gravity = Float(g[row])
}

您的 gravity var 是 local,所以给定的警告完全有意义(即,它的范围是 limited to给定的功能)。

您应该使用以下UIPickerView方法来获取当前选择的索引:

func selectedRow(inComponent component: Int) -> Int

例如:

let gIndex = pickerView.selectedRow(inComponent: 0)
let gValue = Float(g[gIndex])!

请注意,您 不需要 甚至需要实施 didSelectRow 委托方法来获取此信息。

正如评论中正确指出的那样,您当然需要声明 UIPickerView 并将其绑定到视图控制器的实例变量:

@IBOutlet weak var pickerView: UIPickerView!

您需要在方法范围之外声明变量:

var gravity: Float?
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
   gravity = Float(g[row])
}

局部变量范围仅限于方法,因为您不在方法中使用它,您会收到警告。

这是 Swift 而不是 Javascript :)

要使用pickerView,首先要提到它的DataSource和Delegate。

UIPickerViewDataSource, UIPickerViewDelegate

现在通过右键单击 pickerView 创建它 -> 到 ViewContoller.swfit.You 会变成这样:

@IBOutlet var pickerView: [UIPickerView]!

创建一个数组,其中包含您要在 pickerView 中显示的内容。就像这样:

var array:[String] = ["David","Mikel","Akhil","Akshay","Zlatan"]

现在您必须使用 pickerView 函数。只有在 class 中提到 DataSource 和 Delegate 才能使用这些函数。函数是:

// number of rows or number of components
func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

// number of rows that we have to set
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return array.count
}

// set title in picker view according to the elements
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return array[row]
}

// when an element is selected, store in a string
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    pickerString = array[row]
    print(pickerString) // pickerString is String type. You can create this, to show the content selected.
}