在PageViewController中显示模态ViewController

时间:2015-06-02 15:38:21

标签: ios swift modal-dialog uipageviewcontroller

我的应用程序中有一个基于PageViewController的母版页。在该母版页上,我有一个侧栏,为用户提供选项。其中一个选项是显示"关于"有关申请的信息。当用户单击侧栏中的“关于”按钮时,我想将我的AboutViewController显示为模态。看来我的所有链接都是正确的,但是当我单击侧栏中的“关于”菜单选项时,整个屏幕只会变黑(这是背景颜色或我的AboutViewController),并且我的AboutViewController中的任何内容都不可见。

这是我的PageViewController的代码。突出显示的代码是显示模态视图控制器的代码。

Code for Master Page View Controller

以下是我试图显示的关于视图控制器场景的屏幕显示。

About Info scene

在点击“关于”按钮之前,应用程序外观的屏幕截图在哪里: Before Click About

点击“关于”按钮的方式如下: Clicking About button

这是我点击about按钮后得到的: enter image description here

关于我做错了什么建议?

更新:根据提供的评论我更新了我的代码如下,我仍然遇到同样的问题。

            gobj_sideBar.showSideBar(false)
            iobj_AboutViewController = AboutViewController()
            iobj_AboutViewController?.iobj_CloseAboutInfoDelegate = self
            iobj_AboutViewController!.modalTransitionStyle = UIModalTransitionStyle.CoverVertical
            // Cover Vertical is necessary for CurrentContext
            iobj_AboutViewController!.modalPresentationStyle = .CurrentContext
            // Display on top of    current UIView
            self.presentViewController(iobj_AboutViewController!, animated: true, completion: nil)

另外 - 我不相信在我的关于视图控制器的代码中显示空白页面我确实有以下代码行关闭状态栏并且状态栏在显示的场景中不可见当我点击“关于”按钮时。

    override func prefersStatusBarHidden() -> Bool {

    return true;
}

好的所以我转而使用Modal Segues作为建议并且大部分都有效。我现在唯一的挑战是我希望关于视图控制器显示为一个小的弹出窗口类型视图,但它占据了如下所示的全屏:

enter image description here

这些是我为About视图控制器设置的属性。任何想法我应该如何更改它以便视图出现作为弹出窗口类型窗口,其中背景灰显但关于视图不占用整个屏幕? enter image description here

1 个答案:

答案 0 :(得分:1)

我没有足够的经验告诉我的错误,但我发现你的代码中有些错误:

  • modalTransitionStyle和modalPresentationStyle将在呈现的视图控制器上设置,而不是在演示中。

  • 您实例化一个AboutViewController,保存对它的引用并将self设置为其委托但在调用presentViewController(...)时实例化另一个AboutViewController

另请注意,黑色不是“关于”场景的背景颜色,而是空白屏幕的颜色。

如果我是你,我也会对场景使用segue,它不易出错。而不是委托解雇关于视图控制器,尝试展开segue。