如何在Swift 4中删除和添加Uipickerview中的项目



我有三个文本字段,我在其中显示与选择值相同的pickerview。因此,条件是我在一个阵列中有5个值,值是红色,蓝色,绿色,黄色,黑色的值。因此条件为

  1. 这三个文本字段不能具有相同的值。那就是对于第一个textfield 1,如果我从picker中选择red as as value,当我选择textfield 2或textfield 2或text字段3时,应从picker视图中删除或禁用值"红色"。

  2. ,如果我将禁用或删除的值从picker视图从picker查看为黑色的值,当我单击Textfield 2或Textfield 3时,应将其添加回Pickerview。

我正在尝试的代码是:

import UIKit

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
    @IBOutlet weak var textFiled1: UITextField!
    @IBOutlet weak var textFiled2: UITextField!
    @IBOutlet weak var textFiled3: UITextField!
    @IBOutlet weak var pickerView: UIPickerView!
    var Array = ["Blue", "Green", "Red", "White", "Grey"]
    var indexOfPicker = Int()
    override func viewDidLoad() {
        super.viewDidLoad()
        pickerView.dataSource = self
        pickerView.delegate = self
    }
    @IBAction func minusButton(_ sender: UIButton) {
        if Array.count != 0 {
            Array.remove(at: indexOfPicker)
            pickerView.reloadAllComponents()
        }
    }
    @IBAction func plusButton(_ sender: UIButton) {
        if textFiled.text != "" {
            Array.append(textFiled.text!)
            pickerView.reloadAllComponents()
        }
    }
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return Array.count
    }
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return Array[row]
    }
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        indexOfPicker = row
    }    
}
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate, UITextFieldDelegate {
    @IBOutlet weak var textFiled1: UITextField!
    @IBOutlet weak var textFiled2: UITextField!
    @IBOutlet weak var textFiled3: UITextField!
    @IBOutlet weak var pickerView: UIPickerView!
    var selectedTextField:UITextField?
    var colorsArray = ["Blue", "Green", "Red", "White", "Grey"]
    override func viewDidLoad() {
        super.viewDidLoad()
        textFiled1.delegate = self
        textFiled2.delegate = self
        textFiled3.delegate = self
        pickerView.dataSource = self
        pickerView.delegate = self
    }
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        let tempArr = colorsArray.filter { ![textFiled1.text!,textFiled2.text!,textFiled3.text!].contains($0) }
        return tempArr.count
    }
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        let tempArr = colorsArray.filter { ![textFiled1.text!,textFiled2.text!,textFiled3.text!].contains($0) }
        return tempArr[row]
    }
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        let tempArr = colorsArray.filter { ![textFiled1.text!,textFiled2.text!,textFiled3.text!].contains($0) }
        self.selectedTextField?.text = tempArr[row]
        pickerView.reloadAllComponents()
    }
    func textFieldDidBeginEditing(_ textField: UITextField) {
        self.selectedTextField = textField
        pickerView.reloadAllComponents() 
    }
}

最新更新