在我的选项卡应用程序中,点击其中一个选项卡后,我想显示一个带有一些信息的模态视图控制器。
在我的应用程序委托的didSelectViewController方法中,我正在添加模态视图。但它会占据整个屏幕并隐藏选项卡栏。我不想隐藏选项卡栏,只想显示弹出的模态视图,并且可以被取消。
我该怎么做?
请帮忙。
谢谢。
模态视图控制器在iPhone上始终以全屏方式呈现。如果您不想隐藏选项卡栏,则需要以某种其他方式呈现此视图,而不是使用模态。
通过将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 (我们想要展示的视图)的视图。您可以通过设置PresentationStyle以模态方式呈现它。这种样式将viewController呈现为一个正方形,不占据整个屏幕。
self.modalPresentationStyle = UIModalPresentationFormSheet;
您还可以设置过渡效果:
self.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;