使用Modal View Controller和UITabBarController以及UINavigationBar

时间:2016-02-07 22:59:04

标签: ios xcode swift

我的应用程序嵌入在UITabBarController中,有4个标签。 4个标签中的3个嵌入在UINavigationControllers内,而另一个则不包含在ViewController中。

我发现如果NavigationBar有一个present view controller modally并且我正在使用define context进行segueing,并且呈现控制器选择了NavigationBar,则模式视图会显示在两个下面UITabBardefine context。如果未选择UINavigationBar,则模式视图会显示在UITabBar上方,但仍位于Modal View Controller下方。像那样,

enter image description here

问题在于,因为UITabBar位于UITabBar下方,用户仍然可以访问presenting view controller并在解除之前更改标签,从而导致黑屏。

但是,如果UINavigationBar没有define context且未选择modal view controller,则UITabBar会占据整个视图,并显示在{{1}上方1}}。这意味着用户在解除模态视图之前无法切换选项卡。这是我追求的预期效果,但是如何在使用UINavigationBar时实现此目的,以便用户无法切换标签?

1 个答案:

答案 0 :(得分:6)

如果您已在故事板中创建了segue,请选择要在所有内容上显示的模式的segue,并将Presentation属性设置为Over Full Screen

Attributes of a segue

如果您以编程方式呈现模态,假设您将视图命名为显示yourModal,则将modalPresentationStyle设置为:

yourModal.modalPresentationStyle = .OverFullScreen