[英]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.