模态视图控制器隐藏选项卡栏

5
在我的选项卡应用程序中,点击其中一个选项卡后,我想显示一个带有一些信息的模态视图控制器。 在我的应用程序委托的didSelectViewController方法中,我正在添加模态视图。但它会占据整个屏幕并隐藏选项卡栏。我不想隐藏选项卡栏,只想显示弹出的模态视图,并且可以被取消。 我该怎么做? 请帮忙。 谢谢。
5个回答

6

模态视图控制器在iPhone上始终以全屏方式呈现。如果您不想隐藏选项卡栏,则需要以某种其他方式呈现此视图,而不是使用模态。


6

通过将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 (当前可见的视图)的视图,而nextView是 ViewControllerTwo (我们想要展示的视图)的视图。

2
例如,如果secondViewController是第二个选项卡的第二个视图控制器,您应该按照以下方式进行操作:
[secondViewController.view addSubview:要显示的视图];

1

您可以通过设置PresentationStyle以模态方式呈现它。这种样式将viewController呈现为一个正方形,不占据整个屏幕。

self.modalPresentationStyle = UIModalPresentationFormSheet;

您还可以设置过渡效果:

self.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

1
在iOS中,模态视图控制器始终具有所有可用视图控制器中的最高优先级。因此,在您的情况下无法使用模态视图控制器。
如果您只想在屏幕上显示弹出窗口并具有背景可见性,则只需使用UIAlertView。您可以根据需要添加OK或CANCEL按钮以删除警报视图。
或者,
如果您想显示一个完整的视图并具有选项卡条可见性,则将该视图作为子视图添加到该选项卡中。您可以使用视图的transform属性使其感觉像是弹出窗口。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接