ios ipad uipopovercontroller uidatepicker

ios - UIDatePicker en UIPopover



ipad uipopovercontroller (2)

Ahora, ya que ha etiquetado iPhone , se puede asumir claramente que está intentando usar UIPopoverController en iPhone pero UIPopoverController solo está disponible para iPad . Por lo tanto, se produce un bloqueo ya que el iPhone no reconoce ese controlador.

He buscado en todo el Internet (tal vez estoy exagerando un poco) un tutorial sobre cómo colocar un DatePicker en un UIPopover y mostrarlo en una aplicación de iPad. He intentado crear un controlador de vista, colocando el selector de fecha en el controlador de vista y luego:

self.popover = [[UIPopoverController alloc] initWithContentViewController:sa];

(sa es el nombre del controlador de vista que creé), pero esto no funciona, y la aplicación falla. ¿Alguien puede ayudar?


Intenta con el siguiente código. Funcionará bien:

C objetivo

- (IBAction)showDatePicker:(UIButton *)sender { UIDatePicker *datePicker = [[UIDatePicker alloc]init];//Date picker datePicker.frame = CGRectMake(0, 0, 320, 216); datePicker.datePickerMode = UIDatePickerModeDateAndTime; [datePicker setMinuteInterval:5]; [datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];//need to implement this method in same class UIView *popoverView = [[UIView alloc] init]; //view popoverView.backgroundColor = [UIColor clearColor]; [popoverView addSubview:datePicker]; // here you can add tool bar with done and cancel buttons if required UIViewController *popoverViewController = [[UIViewController alloc] init]; popoverViewController.view = datePicker; popoverViewController.view.frame = CGRectMake(0, 0, 320, 216); popoverViewController.modalPresentationStyle = UIModalPresentationPopover; popoverViewController.preferredContentSize = CGSizeMake(320, 216); popoverViewController.popoverPresentationController.sourceView = sender; // source button popoverViewController.popoverPresentationController.sourceRect = sender.bounds; // source button bounds //popoverViewController.popoverPresentationController.delegate = self; [self presentViewController:popoverViewController animated:YES completion:nil]; } - (void)dateChanged:(UIDatePicker *)datePicker { NSLog(@"DATE :: %@", datePicker.date); }

Swift3

@IBAction func showDatePicker(_ sender: UIButton) { let datePicker = UIDatePicker()//Date picker datePicker.frame = CGRect(x: 0, y: 0, width: 320, height: 216) datePicker.datePickerMode = .dateAndTime datePicker.minuteInterval = 5 datePicker.addTarget(self, action: #selector(dateChanged(_:)), for: .valueChanged) let popoverView = UIView() popoverView.backgroundColor = UIColor.clear popoverView.addSubview(datePicker) // here you can add tool bar with done and cancel buttons if required let popoverViewController = UIViewController() popoverViewController.view = popoverView popoverViewController.view.frame = CGRect(x: 0, y: 0, width: 320, height: 216) popoverViewController.modalPresentationStyle = .popover popoverViewController.preferredContentSize = CGSize(width: 320, height: 216) popoverViewController.popoverPresentationController?.sourceView = sender // source button popoverViewController.popoverPresentationController?.sourceRect = sender.bounds // source button bounds self.present(popoverViewController, animated: true, completion: nil) } func dateChanged(_ datePicker: UIDatePicker) { print("DATE :: /(datePicker.date)") }