Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何同时单独控制两个选择器视图内容?_Ios_Swift_Uipickerview - Fatal编程技术网

Ios 如何同时单独控制两个选择器视图内容?

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

我想同时控制两个选择器视图,并将其从一个转换为另一个。它适用于swift中的“我的区域转换器”应用程序

这是我的密码

@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)