Ios 如何同时单独控制两个选择器视图内容?
我想同时控制两个选择器视图,并将其从一个转换为另一个。它适用于swift中的“我的区域转换器”应用程序 这是我的密码Ios 如何同时单独控制两个选择器视图内容?,ios,swift,uipickerview,Ios,Swift,Uipickerview,我想同时控制两个选择器视图,并将其从一个转换为另一个。它适用于swift中的“我的区域转换器”应用程序 这是我的密码 @IBOutlet weak var Picker1: UIPickerView! @IBOutlet weak var dataEntered: UITextField! @IBOutlet weak var resultLabel: UILabel! var inputArray = ["Hector","Bigha","Kattha","Ropani","Daam"] v
@IBOutlet weak var Picker1: UIPickerView!
@IBOutlet weak var dataEntered: UITextField!
@IBOutlet weak var resultLabel: UILabel!
var inputArray = ["Hector","Bigha","Kattha","Ropani","Daam"]
var outputArray = ["just", "checking","to ", "add","another"]
var wheelContent = []
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return wheelContent.count
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return inputArray.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return inputArray[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
_ = inputArray[row]
}
@IBAction func convertButton(sender: AnyObject) {
resultLabel.text = "hello"
}
在您的情况下,您可以只使用两个分区作为选择器视图,而不需要两个选择器视图
var dataSource:[String] = ["Hector","Bigha","Kattha","Ropani","Daam"]
func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int {
return 2
}
func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int {
return dataSource.count
}
func pickerView(pickerView: UIPickerView!, titleForRow row: Int, forComponent component: Int) -> String! {
return dataSource[row]
}
func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int) {
let from = dataSource[pickerView.selectedRowInComponent(0)]
let to = dataSource[pickerView.selectedRowInComponent(1)]
if value = Int(string:textField.text){
let result = Converter.convert(from: from, to: to, value: value)
}
}
class Converter: NSObject {
static func convert(from from: from, to: to, value: value) -> Float{
// do the conversion logic
}
}
如果确实需要两个选择器视图,则可以在自己的类中实现
数据源
和委托
。这样,您就可以在UIViewController
中实例化其中的两个类。您应该创建一个翻译类,每当在第一个选择器视图中选择某个对象时调用该方法。您可能希望使用一个或两个NS_ENUM
将您的答案与查询绑定在一起,但如果您只是将NSString
作为输入,则这是一种方法(如果您的库是静态且枚举清晰的,则建议使用switch
语句):
在此之后,一旦转换了字符串,就需要在第二个UIPickerView
中查找它,并获取它所在的行。然后,调用此方法:
let selectedRow = 3 // assuming you found it at row 3
secondPickerView.selectRow(row: selectedRow, inComponent: selectedComponent, animated: true)
如何获取滚动分区的选定组件的值?如果用户在左侧选择“Ropani”,在右侧选择“Bigha”,并输入“25”并单击“转换”,则我需要从两个隔室提取所选组件,并提供从一个单元转换为另一个单元的逻辑,并更改标签。我需要对每种可能的可用PickerContent组合重复它。逻辑:Ropani=1/20 Bighahow如何获取滚动隔室的选定组件的值?如果用户在左侧选择“Ropani”,在右侧选择“Bigha”,并输入“25”并单击“转换”,则我需要从两个隔室提取所选组件,并提供从一个单元转换为另一个单元的逻辑,并更改标签。我需要对每种可能的可用PickerContent组合重复它。逻辑:Ropani=1/20 BighaYou必须自己编写转换逻辑,但是picker视图代码会针对您的特定问题进行更新
let selectedRow = 3 // assuming you found it at row 3
secondPickerView.selectRow(row: selectedRow, inComponent: selectedComponent, animated: true)