簡體   English   中英

2 TextField 在 1 UIView 中有 2 個選擇器

[英]2 TextField with 2 picker in 1 UIView

我在 1UIView 中創建了一個帶有 2 個選擇器的 2 個文本字段,但是我無法在正確的文本字段中顯示正確的選擇器,因為我不知道如何識別當前處於活動狀態的視圖。 我嘗試了一些帶有標簽的東西(但只適用於選擇器,不適用於文本字段),並創建 var current = UITextField()

var genre = ["-","Homme","Femme"]
var Sport = ["-","Tennis"]
var picker = UIPickerView()
var currentTextField = UITextField()

override func viewDidLoad() {
        super.viewDidLoad()

 picker.delegate = self
    picker.dataSource = self
    GenderTextField.inputView = picker
    WitchSportTextField.inputView = picker
func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if currentTextField == GenderTextField{
        return genre.count
        }else{
            return Sport.count
        }
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if currentTextField == GenderTextField {
            GenderTextField.text = genre[row]
        }else{
            WitchSportTextField.text = Sport[row]
        }
    }
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        if currentTextField == GenderTextField{
        return genre[row]
         }else{
            return Sport[row]
        }
    }

有人作為一個想法?

首先在viewDidLoad中將您的兩個 TextField 委托分配給 self

GenderTextField.delegate = self
WitchSportTextField.delegate = self

使用此擴展來確定哪個TextField處於活動狀態。

extension YourClass: UITextFieldDelegate {
    func textFieldDidBeginEditing(_ textField: UITextField) {
         currentTextField = textField
         picker.reloadAllComponents() //Reload for accurate data
    }
}

注意:變量名應以小寫字母開頭。 使用描述性名稱來闡明您的意圖:

看看這個: https : //github.com/MLSDev/development-standards/blob/master/platform/ios/swift-coding-conventions.md

這是完整的代碼

var genre = ["-","Homme","Femme"]
var Sport = ["-","Tennis"]
var genrepicker = UIPickerView()
var Sportpicker = UIPickerView()
var genretTextField = UITextField()
var SportTextField = UITextField()

override func viewDidLoad() {
        super.viewDidLoad()

    genrepicker.delegate = self
    genrepicker.dataSource = self

    Sportpicker.delegate = self
    Sportpicker.dataSource = self
    genretTextField.inputView = genrepicker
    SportTextField.inputView = Sportpicker

func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if pickerView == genrepicker{
        return genre.count
        }else{
            return Sport.count
        }
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if pickerView == genrepicker {
            GenderTextField.text = genre[row]
        }else{
            WitchSportTextField.text = Sport[row]
        }
    }
   func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        if pickerView == genrepicker{
        return genre[row]
         }else{
            return Sport[row]
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM