Gibt es eine Möglichkeit zum ausblenden der UIDatePicker auf Swift?
Ich versuche zu verbergen mein datepicker, bis mein textField-Objekt ausgewählt ist. Ich Tat dies, einfach für eine pickerView ich habe. Allerdings habe ich nicht in der Lage gewesen, eine Lösung zu finden, mithilfe von Swift zu zeigen, dann verstecken Sie die Datumsauswahl auf ein textField.
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {
@IBOutlet weak var TeeTimes: UILabel!
@IBOutlet weak var textFieldDate: UITextField!
@IBOutlet weak var datePicker: UIDatePicker!
@IBOutlet weak var picker: UIPickerView! = UIPickerView()
@IBOutlet weak var textfieldCourse: UITextField!
var pickerData = ["Norman Course", "Riding Golf", "Dmob Course"]
override func viewDidLoad() {
super.viewDidLoad()
//Do any additional setup after loading the view, typically from a nib.
picker.hidden = true;
self.textfieldCourse.delegate = self
self.picker.delegate = self
self.picker.dataSource = self
textfieldCourse.text = pickerData[0]
//Inputs the data into the array
datePicker.hidden = true;
datePicker.addTarget(self, action: Selector("datePickerChanged:"), forControlEvents: UIControlEvents.ValueChanged)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose of any resources that can be recreated.
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) ->Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) ->Int {
return pickerData.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickerData[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int){
textfieldCourse.text = pickerData[row]
picker.hidden = true
}
func textFieldShouldBeginEditing(textfield: UITextField) ->Bool {
picker.hidden = false
return false
}
func datePickerChanged(dataPicker: UIDatePicker) {
datePicker.hidden = false
let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.ShortStyle
let strDate = dateFormatter.stringFromDate(datePicker.date)
textFieldDate.text = strDate
}
}
InformationsquelleAutor SwaggyMcMuffins | 2015-10-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich kann nicht sehen, warum würden Sie nicht in der Lage sein auf dem gleichen Prinzip, da beide UIDatePicker und UIPickerView sind Unterklassen von UIView. Legen Sie einfach das delegieren von textFieldDate zu selbst und anwenden der gleichen Logik innerhalb textFieldShouldBeginEditing. Nur Sie haben zu prüfen, welche text-Feld bearbeitet wird, um zu zeigen, das richtige auszuwählen.
Zusätzlich, sollten Sie datePicker.versteckte zu wahr in Ihrem datePickerChanged Funktion angenommen, Sie möchten den Datum-picker zu verstecken, sobald ein Datum ausgewählt wurde.
Hi rockhammer, Ihr Problem scheint zu sein, mit der Art, wie Sie Ihr UI-Constraints. Sie sollten rumfummeln im Auto-Layout, bis Sie das gewünschte Ergebnis erhalten. Dies sollte eine hilfreiche Referenz: stackoverflow.com/questions/19561269/...
Hallo Dennis, vielen Dank für die Zeiger. Ich war verzweifelt versucht, zu vermeiden, die UITableView Methode zum anzeigen/ausblenden der datePicker. Ihre Referenz hat mir geholfen, herauszufinden, wie es zu tun. Dank
InformationsquelleAutor Dennis Goldfinger
Können wir definitiv verwenden Sie auto-layout-und Satz-Einschränkungen zu verstecken, den Raum und Kollaps verschiedene Ansichten. Sie können die Option " auto-layout für verschiedene Objekte und legen Sie die Höhe der Datum-picker. Drag-and-drop die Höhe Einschränkung in den controller und geben Sie einen Namen drag und drop constraint. Es wird in etwa so Aussehen link
Nächsten Satz die Einschränkung auf " 0 " in das viewDidLoad ()
datePickerHeight.constant = 0
Nun, wo Sie versteckt sind, die Ihre datePicker-legen Sie die Höhe 0 und, wenn Sie zeigen, das datePicker-legen Sie die Höhe wie die gewünschte Höhe.
Sie können sue
if dateTimePicker.hidden {
dateTimePicker.hidden = false
datePickerHeight.constant = 135
} else {
dateTimePicker.hidden = true
datePickerHeight.constant = 0
}
InformationsquelleAutor hacker_1989