Come posso mostrare un UIDatePicker
da UITableViewCell e avere lo datepicker
una barra degli strumenti nella parte superiore che a sinistra ci si arresta? Ci sono dei buoni tutorial su come farlo?Come mostrare uidatepicker da uitableviewcell
risposta
ho di recente dovevo fare esattamente la stessa cosa
- Inserire un
UITextField
nella vostraUITableViewCell
(potrebbe essere necessario creare un costumeUITableViewCell
a seconda se si desidera che appaia su ogni cellula dinamica della vostraUITableView
o su una singola cella statica). Creare proprietà per un
UIDatePicker
, unUIToolbar
, e unUITextField
, poi in IB collegare la proprietàUITextField
alUITextField
creata nel passaggio 1 (Se si utilizza una classe personalizzataUITableViewCell
, è lì che la proprietàUITextField
avrebbe bisogno andare):@property (strong, nonatomic) UIDatePicker * datePicker; @property (strong, nonatomic) UIToolbar * datePickerToolbar; @property (strong, nonatomic) IBOutlet UITextField *textField; ... @synthesize datePicker, datePickerToolbar, textField;
Imposta il tuo
UIDatePicker
,UIToolbar
, eUITextField
:- (void)viewDidLoad { // Initialise UIDatePicker datePicker = [[UIDatePicker alloc] init]; datePicker.datePickerMode = UIDatePickerModeTime; [datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged]; // method to respond to changes in the picker value // Setup UIToolbar for UIDatePicker datePickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)]; [datePickerToolbar setBarStyle:UIBarStyleBlackTranslucent]; UIBarButtonItem *extraSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(dismissPicker:)]; // method to dismiss the picker when the "Done" button is pressed [datePickerToolbar setItems:[[NSArray alloc] initWithObjects: extraSpace, doneButton, nil]]; // Note: If you're using dynamic cells, the below 2 lines need to be in your cellForRowAtIndexPath method instead. // Set UITextfield's inputView as UIDatePicker textField.inputView = datePicker; // Set UITextfield's inputAccessoryView as UIToolbar textField.inputAccessoryView = datePickerToolbar; }
Setup
dismissPicker
metodo:-(void)dismissPicker:(id)sender{ [textField resignFirstResponder]; }
Setup
datePickerValueChanged
metodo:- (void)datePickerValueChanged:(id)sender{ NSDate *selectedDate = datePicker.date; NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"HH:mm"]; [textField setText:[df stringFromDate:selectedDate]]; }
Nota: Nel mio codice, avevo bisogno l'interfaccia per visualizzare l'ora, quindi il formato della data impostata qui (HH:mm
). Per questo motivo, noterai anche che nel mio codice di inizializzazione UIDatePicker
in viewDidLoad
, ho impostato la sua modalità su UIDatePickerModeTime
. Per le selezioni di data, è possibile impostarlo su UIDatePickerModeDate
.
È possibile inserire un UITextField invisibile in UITableViewCell e impostare la vista di input di UITextFields su un UIDatePicker. Qui noi il codice:
yourdatePicker = [[UIDatePicker alloc]init];
yourtextField.inputView = yourdatePicker;
Sto usando ActionSheetPicker [1]. Permette di mostrare qualsiasi tipo di raccoglitore da un foglio di azione in parte sovrapposto alla scena corrente. Inoltre, puoi aggiungere pulsanti (come annulla o "oggi") e un titolo nella parte superiore della vista.
[1]: la versione originale di Tim Cinel: https://github.com/TimCinel/ActionSheetPicker Miglioramenti di Hari Singh Karam: https://github.com/Club15CC/ActionSheetPicker deprecati fissi nella mia forchetta (penso si è diffuso negli altri ormai): https://github.com/booiiing/ActionSheetPicker
- 1. UIDatePicker per mostrare solo l'anno
- 2. Nascondere/Mostrare UITableViewCell Indicatore di segnalazione accessoria
- 3. UIDatePicker perde
- 4. Recupera data e ora da UIDatePicker iOS
- 5. Prendi solo la data (tempo) da UIDatePicker
- 6. Ottieni il tempo selezionato da UIDatePicker
- 7. Personalizzazione UIDatePicker
- 8. Come impostare UIDatePicker su una data iniziale diversa da "Oggi"
- 9. SDK per iOS: come ottenere la data da un UIDatePicker?
- 10. Come posso ottenere uitableViewCell da indexPath?
- 11. Mostrare e nascondere UITableViewCell con UISwitch arresti anomali troppo veloci
- 12. Come posso mostrare un UIDatePicker all'interno di un Popover su iPad usando StoryBoard?
- 13. Come posso mostrare un UIDatePicker invece di una tastiera quando un utente seleziona un UITextField?
- 14. Come mostrare UIAlertController da Appdelegate
- 15. iphone - Accesso UITableViewController da UITableViewCell
- 16. Presentazione di UIAlertController da UITableViewCell
- 17. UIDatePicker - Localizzazione problema
- 18. UIDatePicker con "fatto" pulsante
- 19. UIDatePicker ritorno sbagliato NSDate
- 20. UIDatePicker con UIToolbar
- 21. Interface Builder UIDatePicker
- 22. Posso localizzare un UIDatePicker?
- 23. Sostituzione UIDatePicker per tvOS?
- 24. Problema UIDatePicker in iOS9
- 25. Swift UIDatePicker per l'inserimento del campo di testo - come far scomparire UIDatePicker?
- 26. Come disabilitare AM/PM in UIDatePicker
- 27. Come si riscrive il componente UIDatePicker?
- 28. Come creare il controllo personalizzato UIDatePicker
- 29. UIDatePicker meno l'ora esatta - Swift
- 30. UIDatePicker 15 minuti Incrementi Swift
questo è fantastico, tuttavia potresti elaborare un paio di cose. Prima ricevo questo errore quando provo a ridimensionare il datepicker: - [UIBarButtonItem resignFirstResponder]: selettore non riconosciuto e, potresti spiegare come impostare il testo dei campi di testo alla data impostata dall'utente. Sarebbe qualcosa come textField.text = ?? – Apollo
@Auser Oops, controlla la modifica sul mio codice 'dismissPicker'. Inoltre, ho aggiunto il codice per un nuovo metodo per reagire a "UIControlEventValueChanged" e il codice per impostarlo su "UIDatePicker". – Yazid
questo è un uomo così fantastico. Grazie per avermi dedicato del tempo per guidarmi. Lo apprezzo davvero. – Apollo