¿Cómo puedo mostrar un UIDatePicker dentro de un Popover en iPad usando StoryBoard?

He logrado mostrar el datepicker dentro del popover, hacerlo programáticamente como se muestra en UIDatePicker en UIPopover .

Pero he intentado hacerlo en Interface Builder, ya hice un View Controller llamado DatePickerViewController.m con un DatePicker en él y su IBoulet correspondiente

#import <UIKit/UIKit.h> @interface DatePickerViewController : UIViewController @property (strong, nonatomic) IBOutlet UIDatePicker *birthdayDatePicker; @end 

DatePicker dentro de DatePickerViewController.m en StoryBoard

Entonces necesito que esto se muestre en un popover cuando se edita el campo de text Cumpleaños. entonces uso el siguiente código

 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ //Assign DatePicker to Birthday TextField //build our custom popover view DatePickerViewController* popoverContent = [[DatePickerViewController alloc] init]; //resize the popover view shown //in the current view to the view's size popoverContent.contentSizeForViewInPopover = CGSizeMake(320, 216); // dismiss existing popover if (self.popoverControllerBirthday) { [self.popoverControllerBirthday dismissPopoverAnimated:NO]; self.popoverControllerBirthday = nil; } //create a popover controller with my DatePickerViewController in it UIPopoverController *popoverControllerForDate = [[UIPopoverController alloc] initWithContentViewController:popoverContent]; //Set the delegate to self to receive the data of the Datepicker in the popover popoverControllerForDate.delegate = self; //Adjust the popover Frame to appear where I want CGRect myFrame =textField.frame; myFrame.origin.x = 260; myFrame.origin.y = 320; //Present the popover [popoverControllerForDate presentPopoverFromRect:myFrame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES]; self.popoverControllerBirthday = popoverControllerForDate; return NO; // tells the textfield not to start its own editing process (ie show the keyboard) } 

Y también importe el DatePickerViewController personalizado en mi ViewController actual

 #import "DatePickerViewController.h" 

Pero no muestra el datepicker dentro del popover.

introduzca la descripción de la imagen aquí

¿Alguien sabe lo que podría estar pasando?

Es posible que desee evitar todo el trabajo en el guión gráfico creando el ViewController y el DatePicker mediante progtwigción:

 //build our custom popover view UIView *v = [[UIView alloc] init]; CGRect pickerFrame = CGRectMake(0, 0, 320, 216); UIDatePicker *pView=[[UIDatePicker alloc] initWithFrame:pickerFrame]; pView.datePickerMode = UIDatePickerModeDate; self.datePicker = pView; [v addSubview:self.datePicker]; UIViewController *popoverContent = [[UIViewController alloc]init]; popoverContent.view = v; //resize the popover view shown //in the current view to the view's size popoverContent.contentSizeForViewInPopover = CGSizeMake(320, 216); // dismiss existing popover if (self.pcDatePicker) { [self.pcDatePicker dismissPopoverAnimated:NO]; self.pcDatePicker = nil; } //create a popover controller with my DatePickerViewController in it UIPopoverController *popoverControllerForDate = [[UIPopoverController alloc] initWithContentViewController:popoverContent]; //Set the delegate to self to receive the data of the Datepicker in the popover popoverControllerForDate.delegate = self; //Adjust the popover Frame to appear where I want CGRect myFrame = sender.frame;//CGRectMake(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, 320, 200); myFrame.origin.x = 260; myFrame.origin.y = 320; //Present the popover [popoverControllerForDate presentPopoverFromRect:myFrame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; self.pcDatePicker = popoverControllerForDate; 

Y luego usa el método delegado para get la date:

 - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController { self.startDate = self.datePicker.date; } 

Resuelto

Todo lo que tengo que hacer es instanciar el Controlador de vista de StoryBoard Date Picker como:

 ... DatePickerViewController* popoverContent = [[DatePickerViewController alloc] init]; popoverContent =[[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"DatePickerVC"]; //resize the popover view shown //in the current view to the view's size popoverContent.contentSizeForViewInPopover = CGSizeMake(320, 216); ... 

donde el identificador se establece en el inspector de attributes StoryBoard

Dónde configurar el Identificador de controlador de vista

y ahora se muestra

DatePicker de DatePickerViewController ahora se muestra