Search code examples
iosshowmodaldialog

How to present modal view in "parentViewController"?


I'm trying to write iPad app.

I have UIViewController as parentViewController (full screen) for masterView and detailView (my handmade splitView). Also I have a separate view (for example moreDetailView) with class and xib, which I would like to show as modal.

masterView has UITableView and detailView has UICollectionView. Both of them has own classes and xib. In detailView there are several items.

In my didSelectItemAtIndexPath: of detailView I would like to show moreDetailView.

So, how can I do that? And how to show it in parentViewController, but NOT in detailView.

Hope my question is understandable.


Solution

  • The code below will present your controller in a modal formsheet (you can change this with the setModalPresentationStyle) on the top of your splitView.

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    
        UIViewController *moreDetailViewController = [[MoreDetailViewController alloc] init];
        [moreDetailViewController setModalPresentationStyle:UIModalPresentationFormSheet]; //or style depending on what you want
        [moreDetailViewController setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
    
        [self presentViewController:moreDetailViewController animated:YES completion:^{
            //stuff you want to do after the viewController has been presented
        }]; }