在页面 ViewController 中显示模式 ViewController
Display Modal ViewController in PageViewController
我的应用程序中有一个基于 PageViewController 的母版页。在该母版页上,我有一个侧边栏,为用户提供选项。其中一个选项是显示有关应用程序的 "About" 信息。当用户单击侧栏中的关于按钮时,我想将我的 AboutViewController 显示为模态。看来我所有的链接都是正确的,但是当我单击侧边栏中的关于菜单选项时,整个屏幕都变黑了(这是背景颜色或我的 AboutViewController)并且我的 AboutViewController 中的内容 none 是可见。
这是我的 PageViewController 的代码。突出显示的代码是显示模态视图控制器的代码。
这是我要显示的关于视图控制器场景的屏幕显示。
点击“关于”按钮之前应用程序的屏幕截图在哪里:
这是单击“关于”按钮的方式:
这是我点击关于按钮后得到的:
关于我做错了什么有什么建议吗?
更新:根据提供的评论,我更新了我的代码,但我仍然遇到同样的问题。
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;
}
好的,所以我按照建议改用模态转场,这基本上很管用。我现在面临的唯一挑战是我希望“关于视图控制器”显示为小型弹出式视图,但它却占据了整个屏幕,如下所示:
这些是我为我的关于视图控制器设置的属性。知道我应该如何更改它以便视图以弹出类型 window 出现,其中背景变灰但关于视图不会占据整个屏幕吗?
我没有足够的经验来判断哪里出了问题,但我发现了您的代码中的一些错误:
modalTransitionStyle 和 modalPresentationStyle 将在呈现的视图控制器上设置,而不是在呈现上设置。
您实例化一个 AboutViewController,保存对它的引用并将 self 设置为它的委托,但是在调用 presentViewController(...) 时您实例化另一个 AboutViewController
还要考虑到黑色不是“关于”场景的背景颜色,而是空白屏幕的颜色。
如果我是你,我也会对场景使用 segue,这样不容易出错。而不是委托关闭关于视图控制器,尝试展开 segue。
我的应用程序中有一个基于 PageViewController 的母版页。在该母版页上,我有一个侧边栏,为用户提供选项。其中一个选项是显示有关应用程序的 "About" 信息。当用户单击侧栏中的关于按钮时,我想将我的 AboutViewController 显示为模态。看来我所有的链接都是正确的,但是当我单击侧边栏中的关于菜单选项时,整个屏幕都变黑了(这是背景颜色或我的 AboutViewController)并且我的 AboutViewController 中的内容 none 是可见。
这是我的 PageViewController 的代码。突出显示的代码是显示模态视图控制器的代码。
这是我要显示的关于视图控制器场景的屏幕显示。
点击“关于”按钮之前应用程序的屏幕截图在哪里:
这是单击“关于”按钮的方式:
这是我点击关于按钮后得到的:
关于我做错了什么有什么建议吗?
更新:根据提供的评论,我更新了我的代码,但我仍然遇到同样的问题。
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;
}
好的,所以我按照建议改用模态转场,这基本上很管用。我现在面临的唯一挑战是我希望“关于视图控制器”显示为小型弹出式视图,但它却占据了整个屏幕,如下所示:
这些是我为我的关于视图控制器设置的属性。知道我应该如何更改它以便视图以弹出类型 window 出现,其中背景变灰但关于视图不会占据整个屏幕吗?
我没有足够的经验来判断哪里出了问题,但我发现了您的代码中的一些错误:
modalTransitionStyle 和 modalPresentationStyle 将在呈现的视图控制器上设置,而不是在呈现上设置。
您实例化一个 AboutViewController,保存对它的引用并将 self 设置为它的委托,但是在调用 presentViewController(...) 时您实例化另一个 AboutViewController
还要考虑到黑色不是“关于”场景的背景颜色,而是空白屏幕的颜色。
如果我是你,我也会对场景使用 segue,这样不容易出错。而不是委托关闭关于视图控制器,尝试展开 segue。