ios - 选择器不输出行数据 swift 3

标签 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]
        }
    }
}

最佳答案

你忘了参数标签 _

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

关于ios - 选择器不输出行数据 swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50972299/

相关文章:

更改导航 Controller 框架后的 iOS 6 ViewController 框架问题

iphone - 一个iOS应用程序可以支持多个推送通知注册吗?

ios - 如何在不删除 ios 中的选项卡的情况下从选项卡栏 Controller 中删除 "more"选项

swift - 在两个实体之间建立关系?

syntax - 如何在 Swift 中重写 Objective C 委托(delegate)方法

ios - “没有下标成员”错误(迁移到Swift 3)

swift - 始终在get方法中登录成功

ios - ImageView.contentMode 不适用于 Collection View

ios - 查询 Firebase 数据库中的多个键

swift - 将图像上传到 Firebase 存储和数据库