从 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.
}
所以我有一个 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.
}