2014-11-18 10 views
15

Questo è il mio primo tentativo di Swift o di un'app per iPhone, quindi inutile dire che non sono sicuro di come fare molte cose a questo punto.Swift UIDatePicker per l'inserimento del campo di testo - come far scomparire UIDatePicker?

In questo momento ho un controller di visualizzazione con un campo di testo e un pulsante. Sono riuscito a trovare codice di esempio per realizzare quasi ciò di cui ho bisogno. Mi piacerebbe fare quanto segue:

  1. Quando faccio clic sul campo di testo, un UIDatePicker appare sullo schermo.
  2. Imposta il selettore UIDate per visualizzare solo l'ora, non una data.
  3. Inserire la data UIDatePicker selezionata nel campo di testo.
  4. Chiusura dell'UIDatePicker quando faccio clic sul pulsante.

Da 1 a 3 funziona. Ma non riesco a capire come far sparire UIDatePicker e tornare sullo schermo se faccio nuovamente clic sul campo di testo.

import UIKit 

class ViewController: UIViewController { 


    @IBOutlet weak var dateField: UITextField! 

    @IBAction func dateField(sender: UITextField) { 

     var datePickerView : UIDatePicker = UIDatePicker() 
     datePickerView.datePickerMode = UIDatePickerMode.Time 
     sender.inputView = datePickerView 
     datePickerView.addTarget(self, action: Selector("handleDatePicker:"), forControlEvents: UIControlEvents.ValueChanged) 

    } 
    @IBAction func DoneButton(sender: UIButton) { 

     //How to make datepicker disappear??? 
    } 

    func handleDatePicker(sender: UIDatePicker) { 
     var timeFormatter = NSDateFormatter() 
     timeFormatter.dateStyle = .NoStyle 
     timeFormatter.timeStyle = .ShortStyle 
     dateField.text = timeFormatter.stringFromDate(sender.date) 
    } 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    } 

} 
+1

Il codice mi ha aiutato a ordinare il mio datepicker .. grazie! –

+1

MGann come hai fatto in modo che una volta cliccato il campo la tastiera non mostra ma DatePicker ringrazia – kareem

+0

Demo di DatePicker con ToolBar: https://iosdevcenters.blogspot.com/2016/03/ios9-uidatepicker-example-with. html –

risposta

5

Si chiama resignFirstResponder sul campo di testo:

@IBAction func DoneButton(sender: UIButton) { 
    dateField.resignFirstResponder() 
} 

Inoltre, non è una grande idea di avere un metodo e una proprietà con lo stesso nome - non sono sicuro circa la precedenza lì, ma le probabilità sono potrebbe essere fonte di confusione ad un certo punto.

+0

Ciao Nate - È stato! Grazie per l'aiuto! Anche grazie per il commento sul nome del metodo e della proprietà, sarò sicuro di cambiarlo. – MGann

0

È anche possibile creare una presa per DatePicker. @IBOutlet weak var datePicker: UIPickerView!

quindi nella funzione

@IBAction func DoneButton(sender: UIButton) { 

    datePicker.hidden = true 
} 
+1

Ti rendi conto che il selettore di data è una vista di input per la tastiera, giusto? .... Il primo intervento di chi respinge è il modo corretto per sbarazzarsi di una vista da tastiera, non nascondendo la vista contenente .... – TheCodingArt