选择器不输出行数据快速3

时间:2018-06-21 15:28:33

标签: ios swift swift3

我正在尝试为任务应用编写颜色选择器。当我尝试添加任务时,选择器从不会对我的“已选择”变量进行更改(在第5行声明),并且只会打印“空白”(在第7行)。我对新手来说已经足够新了,以至于我看不到自己在做错什么。我相当确定它与我的didSelectRow函数(最后一个函数)的设置有关,因为如果函数正在触发,即使它不是我想要的字符串,它仍会在else语句中设置一些内容,但不是进行任何更改。

class SecondViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

    @IBOutlet weak var input: UITextField!

    @IBOutlet weak var picker: UIPickerView!

    var pickerData: [String] = [String]()

    var picked: String = "blank"

    @IBAction func addItem(_ sender: Any) {
        print (picked)
        if (input.text != "" && picked != "") {
            list.append(input.text! as AnyObject)
            if picked == "Red" {
                colors.append(UIColor.red)
            }
            else if picked == "Orange" {
                colors.append(UIColor.orange)
            }
            else if picked == "Yellow" {
                colors.append(UIColor.yellow)
            }
            else if picked == "Green" {
                colors.append(UIColor.green)
            }
            else if picked == "Blue" {
                colors.append(UIColor.blue)
            }
            else if picked == "Purple" {
                colors.append(UIColor.purple)
            }
            else if picked == "White" {
                colors.append(UIColor.white)
            }
            input.text = ""
            userDefaults.set(list, forKey: "tasks")
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
        self.picker.delegate = self
        self.picker.dataSource = self

        pickerData = ["Select a color", "White", "Red", "Orange", "Yellow", "Green", "Blue", "Purple"]
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
    }

    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }

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

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

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if row == 0 {
            picked = ""
        }
        else {
            picked = pickerData[row]
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您忘记了参数标签_

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {