¿EKEventEditViewController no admite ser enviado a un NavController? Ver código y error adjunto

¿EKEventEditViewController no admite ser enviado a un NavController? Consulte el código y el error adjunto.

Puedo presentar el EKEventEditViewController muy bien, PERO cuando bash presionar a través del controller de navigation, aparece el siguiente error:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing a navigation controller is not supported' 

El código es:

 EKEventEditViewController *addController = [[[EKEventEditViewController alloc] initWithNibName:nil bundle:nil] autorelease]; addController.eventStore = self.eventStore; addController.editViewDelegate = self; [self.navigationController pushViewController:addController animated:TRUE]; // ERROR HERE 

EKEventEditViewController es una subclass de UINavigationController, por lo que no se puede enviar a otro UINavigationController.

EKEventEditViewController debe presentarse de manera modal.

EKEventEditViewController Class Ref

En caso de que esté buscando algún código para iniciar una implementación iPad-with-popover:

 EKEventStore *eventStore [[EKEventStore alloc] init]; EKEventEditViewController *eventController = [[EKEventEditViewController alloc] init]; eventController.editViewDelegate = self; eventController.eventStore = eventStore; EKEvent *event = [EKEvent eventWithEventStore: eventStore]; event.title = @"New Event"; event.startDate = [[NSDate alloc] init]; event.endDate = [[NSDate alloc] initWithTimeInterval: 60 * 60 sinceDate: event.startDate]; eventController.event = event; /* You can add EKEventEditViewController directly to the popover -- this had me baffled for _hours_ */ popover = [[UIPopoverController alloc] initWithContentViewController: eventController]; 

También querrá include este método de delegado para hacer lo que necesite cuando el usuario complete o cancele la edición de events:

 - (void) eventEditViewController: (EKEventEditViewController *)controller didCompleteWithAction: (EKEventEditViewAction)action { EKEvent *thisEvent = controller.event; switch (action) { case EKEventEditViewActionCanceled: NSLog(@"Canceled action"); break; case EKEventEditViewActionSaved: NSLog(@"Saved action: %@", thisEvent.startDate); break; case EKEventEditViewActionDeleted: NSLog(@"Deleted action"); break; default: break; } [popover dismissPopoverAnimated: YES]; } 

¡Disfrutar!

marca

Para futuros lectores:

EKEventEditViewController es un UINavigationController por lo que puede decir:

 EKEventEditViewController *controller = [[EKEventEditViewController alloc] init]; // Set your properties here [self.navigationController pushViewController:controller.viewControllers[0] animated:YES]; 

Esto funciona para mí, pero no sé si puedes hacer esto para Apple.