1
3つの異なる配列を使用して3つのテキストフィールドを作成するpickerViewを作成しましたが、1つのテキストフィールドをタップして行を選択してから別のテキストフィールドを直接タップすると、そのテキストフィールドの配列内の情報新しいUITextFieldを選択するとUIPickerViewの行が更新されます
テキストフィールドをタップしてタップすると、ピッカービューが閉じられ、別のテキストフィールドをタップして更新して正常に動作します。
var teams = [String]()
var schedules = ["A","B"]
var services = ["9AM","12PM","5PM"]
var pickerView:UIPickerView!
override func viewDidLoad() {
super.viewDidLoad()
pickerView.delegate = self
pickerView.dataSource = self
teamTextField.inputView = self.pickerView
serviceTextField.inputView = self.pickerView
scheduleTextField.inputView = self.pickerView
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if teamTextField.isFirstResponder() {
return teams.count
}
else if scheduleTextField.isFirstResponder() {
return schedules.count
}
else {
return services.count
}
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if teamTextField.isFirstResponder() {
return teams[row]
}
else if scheduleTextField.isFirstResponder() {
return schedules[row]
}
else {
return services[row]
}
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if teamTextField.isFirstResponder() {
let itemSelected = teams[row]
teamTextField.text = itemSelected
}
else if scheduleTextField.isFirstResponder() {
let itemSelected = schedules[row]
scheduleTextField.text = itemSelected
}
else if serviceTextField.isFirstResponder() {
let itemSelected = services[row]
serviceTextField.text = itemSelected
}
}
func textFieldDidBeginEditing(textField: UITextField) {
pickerView.reloadAllComponents()
}
必要なコードはすべて必要です。他に必要なものがあれば教えてください。この追加する
のイベントを送ったので、その代わりに、現在と呼ばれるバージョンは、(あれば私のコードの一番下を参照してくださいあなたはそれを逃した)その方法のそれかそれとも? –
はい、現在のメソッドの代わりに –
ありがとうございます!出来た。私は基本的に、私がすでに作成したテキストフィールドのIBActionsにEdited Did Beginを接続する以外は、あなたが私に言ったことをしました。 –