如何在 masterViewController 中呈现 modalViewController?

Posted

技术标签:

【中文标题】如何在 masterViewController 中呈现 modalViewController?【英文标题】:How to present modalViewController inside the masterViewController? 【发布时间】:2013-06-12 08:02:07 【问题描述】:

我正在使用UISplitViewController 做一个iPad 应用程序。我想在 masterViewController 本身中打开一个modalViewController当我以模态方式加载我的视图控制器时,它需要整个屏幕来呈现它。

这是我的代码,在我的masterViewController.m 中以模态方式呈现新的viewController

- (void)addNewContactButtonPressed:(id)sender 
    AddOrEditContact *addContact = [self.storyboard instantiateViewControllerWithIdentifier:@"AddOrEditContact"];
    addContact.screenMode = addMode;
    UINavigationController *navigationController = [[UINavigationController alloc]initWithRootViewController:addContact];
    [self.navigationController presentViewController:navigationController animated:YES completion:nil];

我想在masterViewController. 中以模态方式加载一个新的viewController 任何帮助将不胜感激。

【问题讨论】:

为什么需要模态?您可以推送它(假设有一个导航控制器),也可以使用弹出窗口。 我正在主视图中显示联系人。我想添加新联系人或编辑旧联系人。我想在主视图本身中进行。 Bcoz 设计就是这样。 【参考方案1】:

您不能仅在 masterViewController 上呈现模态视图控制器,但您可以将 childView 控制器添加到 masterViewController 并执行您自己的动画来呈现它

- (void)addiewControllerToHierarchy:(UIViewController *)viewController

    [self addChildViewController:viewController];

    [self.view addSubview:frontViewController.view];

    if ([viewController respondsToSelector:@selector(didMoveToParentViewController:)])
    
        [viewController didMoveToParentViewController:self];
    

并删除

- (void)_removeViewControllerFromHierarchy:(UIViewController *)viewController

    [viewController.view removeFromSuperview];

    if ([viewController respondsToSelector:@selector(removeFromParentViewController)])
    
        [viewController removeFromParentViewController];        
    

这个例子没有动画,可能你需要调整视图的框架等等......但我希望能帮助你

【讨论】:

如果这对您有帮助,请告诉我 是的,它帮助了我.. 但我正在等待更多最佳答案。如果我什么都得不到,我会接受你的。 我需要在您的回答中自行处理模态视图控制器的导航栏。它显示在当前视图控制器导航栏下方。

以上是关于如何在 masterViewController 中呈现 modalViewController?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 .xib 与 MasterViewController .h & .m 关联

弹出 MasterViewcontroller 时推送 DetailViewController

当作为弹出框触发时更改 MasterViewController 的大小

在 UISplitViewNavigator 的 MasterViewController 上呈现 ViewController

UISplitViewController 和 UITabBarController 在通用应用程序的 MasterViewController 中

从 MasterViewController 呈现的 ModalView 在 iOS 5.1 中不再是全屏