5

在我的基于选项卡的应用程序中,单击其中一个选项卡时,我想显示一个带有一些信息的模态视图控制器。在我的应用程序委托的 didSelectViewController 方法中,我添加了模态视图。但它占据了整个屏幕并隐藏了标签栏。我不想隐藏标签栏,只想显示弹出并可以关闭的模态视图。

我该怎么做?

请帮忙。

提前致谢。

4

5 回答 5

6

模态视图控制器总是在 iPhone 上全屏显示。如果您不想隐藏标签栏,那么您需要以除模态之外的其他方式呈现此视图。

于 2013-01-24T04:13:03.590 回答
5

通过设置modalPresentationStyle.currentContext. _ _ _

let newViewController = UIViewController()
newViewController.view.backgroundColor = UIColor.red
newViewController.modalPresentationStyle = .currentContext
newViewController.modalTransitionStyle = UIModalTransitionStyle.flipHorizontal
present(newViewController, animated: true, completion: nil)

编辑:通过更多测试,如果有人在显示时更改选项卡,则上述内容可能会出现一些错误行为newViewController

为了“修复”,我创建了一个“切换器”——UIViewController在我想在标签栏下翻转的视图控制器之间进行动画处理:

view.addSubview(nextView)
UIView.transition(from: currentView,
   to: nextView,
   duration: 0.5,
   options: animation,
   completion: { (_) in
      currentView.removeFromSuperview()
   })

在这种情况下,currentView是 ViewControllerOne 的视图(当前可见的),以及nextViewViewControllerTwo 的视图(我们要呈现的)。

于 2017-01-08T02:00:04.887 回答
2

例如,如果 secondViewController 是您的第二个标签栏的第二个 viewController,您应该这样做:

[secondViewController.view addSubview:theViewYouWantToShow];

于 2013-01-24T04:17:04.987 回答
1

在 iOS 中,模态视图控制器在所有可用的视图控制器中始终具有最高优先级。所以你不能在你的情况下使用模态视图控制器。

如果您只想在屏幕上显示具有背景可见性的弹出窗口,则只需使用UIAlertView。您可以根据需要添加确定或取消按钮以删除警报视图。

或者

如果要显示具有选项卡栏可见性的完整视图,请将该选项卡中的视图添加为子视图。您可以使用视图的transform属性给它一种弹出的感觉。

于 2013-01-24T04:38:20.287 回答
1

您可以通过设置PresentationStyle来模态地呈现它。这种样式将viewController呈现在一个正方形中,并且不占满屏幕。

self.modalPresentationStyle = UIModalPresentationFormSheet;

您还可以设置过渡:

self.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
于 2015-11-06T10:41:28.357 回答