Note this workaround was needed on xcode6_beta7. The lastest xcode6
has the UIModalPresentationOver* styles fixed. So, I'm just assigning them to myModalViewController.modalPresentationStyle and now it works ok.
Finally made it work in iOS 8 after reading the UIPresentationController help and this post
appDelegate.window.rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
MyModalController *myModalController = [[MyModalController alloc] initWithNibName:@"MyModalController" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:myModalController];
navController.modalPresentationStyle = UIModalPresentationCustom;
navController.transitioningDelegate = myModalController;
[self.navigationController presentViewController:navController animated:YES completion:nil];
You can make the modal view controller inherit from UIViewControllerTransitioningDelegate
@interface MyModalController : UIViewController <UIViewControllerTransitioningDelegate>
and override presentationControllerForPresentedViewController:...
-(UIPresentationController *)presentationControllerForPresentedViewController:(UIViewController *)presented presentingViewController:(UIViewController *)presenting sourceViewController:(UIViewController *)source
{
if (presented == self) {
return [[TransparentPresentationController alloc] initWithPresentedViewController:presented presentingViewController:presenting];
} else {
return nil;
}
}
returning an instance of TransparentPresentationController which inherits from UIPresentationController
@interface TransparentPresentationController : UIPresentationController
and overrides shouldRemovePresentersView
- (BOOL) shouldRemovePresentersView {
return NO;
}