Ich möchte, dass die UIPickerView nach dem Klicken auf die Schaltfläche auf der Symbolleiste angeklickt wird (außer Sicht). Ich habe die UIPickerView als Eingabeansicht des UITextField verknüpft und die UIToolbar als EingabeAccessoryView des UIPickerView festgelegt. Allerdings ruft meine Funktion, die resignFirstResponder aufruft, den UIPicker nicht aus der Ansicht heraus. Jede Hilfe wird geschätzt und danke im Voraus!resignFirstResponder für UIPicker in UITextField Swift
import UIKit
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
// Do any additional setup after loading the view, typically from a nib.
//initialization constants
let pickerView = UIPickerView()
let textField = UITextField()
let pickerData = ["1","2","three"]
override func viewDidLoad() {
//pickerview tool bar
let toolbar = UIToolbar(frame: CGRectMake(0, 0, 320, 44))
var items = [AnyObject]()
//making done button
let doneButton = UIBarButtonItem(title: "Done", style: .Plain, target: self, action: Selector(donePressed()))
items.append(doneButton)
toolbar.barStyle = UIBarStyle.Black
toolbar.setItems(items, animated: true)
//creating textfields with a pickerview
pickerView.delegate = self
pickerView.dataSource = self
pickerView.frame = CGRectMake(0, 0, 500, 300)
textField.inputAccessoryView = toolbar
textField.inputView = pickerView
textField.frame = CGRectMake(200, 55, 100, 35)
textField.backgroundColor = UIColor.blueColor()
//adding objs to viewController
self.view.addSubview(textField)
}
func donePressed() {
resignFirstResponder()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
//MARK: Data Sources UIPickerView
extension ViewController: UIPickerViewDataSource {
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int {
return pickerData.count
}
}
//MARK: Delegates UIPickerView
extension ViewController: UIPickerViewDelegate {
// several optional methods:
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return pickerData[row]
}
func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int) {
textField.text = pickerData[row]
}
}
Danke, dass es behoben haben! –
Um auf das zweite Problem zu erweitern, was passiert, wenn ich mehrere UITextFields mit separaten UIPickerViews verknüpft hatte. Gibt es eine Möglichkeit, das aktive Textfeld durch die Funktion donePressed() zu übergeben? –