Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 无法将选定值从UIPickerView保存到数组_Ios_Arrays_Swift_Xcode_Uipickerview - Fatal编程技术网

Ios 无法将选定值从UIPickerView保存到数组

Ios 无法将选定值从UIPickerView保存到数组,ios,arrays,swift,xcode,uipickerview,Ios,Arrays,Swift,Xcode,Uipickerview,到目前为止,我已经尝试使用 func pickerView1(_ helpTypePicker: UIPickerView, didSelectRow row: Int, inComponent component: Int { infoListInit.requestInfoList[4] = (helpTypePickerValues[row]) } 但是该值并没有保存到数组中。保存后,我尝试打印该值,但没有效果。我的viewDidLoad func中确实有helpTypePick

到目前为止,我已经尝试使用

func pickerView1(_ helpTypePicker: UIPickerView, didSelectRow row: Int, inComponent component: Int { 
  infoListInit.requestInfoList[4] = (helpTypePickerValues[row]) 
}
但是该值并没有保存到数组中。保存后,我尝试打印该值,但没有效果。我的viewDidLoad func中确实有helpTypePicker作为自委托,所以我不知道从这里可以走到哪里。UITextFields中的其他文本值保存得很好,但我的UIPickerViews中没有一个在这方面起作用

下面是完整的课程:

import Foundation
import UIKit

class requestHelpTypePickerScreen: UIViewController, 
UIPickerViewDataSource, UIPickerViewDelegate {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent 
 component: Int) -> Int {
    if pickerView.tag == 1 {
        return helpTypePickerValues.count
    } else {
        return languagePickerValues.count
    }
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    if pickerView.tag == 1 {
        return "\(helpTypePickerValues[row])"
    } else {
        return "\(languagePickerValues[row])"
    }
}
// Mark: outlets
@IBOutlet weak var helpTypePicker: UIPickerView!
@IBOutlet weak var languagePicker: UIPickerView!
@IBOutlet weak var helpTypePickerLabel: UILabel!

let helpTypePickerValues = ["Academic/Professional", "Donate", "Food/Groceries", "Medication", "Emotional Support", "Misc."]
let languagePickerValues = ["Arabic", "Chinese", "Spanish", "English", "French", "Hindi/Urdu", "Korean", "Russian"]

override func viewDidLoad() {
    super.viewDidLoad()
    
    helpTypePicker.delegate = self
    languagePicker.delegate = self
    self.helpTypePicker.selectRow(2, inComponent: 0, animated: true)
    self.languagePicker.selectRow(3, inComponent: 0, animated: true)
}

// Mark: actions
@IBAction func buttonPressed(_ sender: Any) {
    func pickerView(_ helpTypePicker: UIPickerView,
    didSelectRow row: Int,
    inComponent component: Int) {
        infoListInit.requestInfoList[5] = (helpTypePickerValues[row])
    }
    
    // this is called pickerView1 because it would conflict with the above 
    // function if called pickerView
    func pickerView1(_ languagePicker: UIPickerView,
    didSelectRow row1: Int,
    inComponent component: Int) {
        infoListInit.requestInfoList[6] = (languagePickerValues[row1])
    }
    performSegue(withIdentifier: "pickersDone", sender: nil)
}

代码中有一个错误,委托表示当在
UIPickerView
中选择新行时,将调用函数
pickerView(uu2;:didSelectRow:incomonent:)
(参数名称无关紧要)

在您的示例中,当任何选择器选择新行时,
pickerView(uux0:didSelectRow:incomonent:)
将被调用,并将选择器作为参数传递到第一个位置。您应该检查修改了哪个选择器,然后更改逻辑

就你而言:

func pickerView(pickerView:UIPickerView,didSelectRow行:Int,不完整组件:Int){
如果pickerView==helpTypePicker{
infoListInit.requestInfoList[5]=helpTypePickerValues[row]
}否则{
infoListInit.requestInfoList[6]=languagePickerValues[row]
}
}

函数本身是否被调用?或者它只是没有保存到数组中?函数名中似乎有输入错误,它说的是
pickerView1
,而不是
pickerView
(不带1)。请检查是否分配了委托。把相关的代码放进去理解