如何在“parentViewController”中呈现模态视图?

时间:2013-04-10 09:42:22

标签: ios showmodaldialog

我正在尝试编写iPad应用程序。

对于 masterView detailView (我手工制作的splitView),我有UIViewController作为 parentViewController (全屏)。另外,我有一个单独的视图(例如 moreDetailView )与class和xib,我想将其显示为模态。

masterView UITableView detailView UICollectionView。他们都有自己的类和xib。在 detailView 中有几个项目。

detailView didSelectItemAtIndexPath:中,我想显示 moreDetailView

那么,我该怎么做?以及如何在 parentViewController 中显示它,但在 detailView 中显示 NOT

希望我的问题是可以理解的。

3 个答案:

答案 0 :(得分:0)

您正在初始化masterview中的detailviewparentview。要访问parentcontroller,您可以在detailcontroller中声明属性

UIViewController *parent;

在初始化时你可以做到

detailController.parent=self;

并且在显示模态时可以执行

[parent presentModal]; //instead of [self presentModal];

我希望以上对您有用,但您需要更正语法。

答案 1 :(得分:0)

下面的代码将在您的splitView顶部的模态表单中显示您的控制器(您可以使用setModalPresentationStyle进行更改)。

- (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
    }]; }

答案 2 :(得分:0)

- (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
    }];
}