【问题标题】:Modal view controller hides tab bar模态视图控制器隐藏标签栏
【发布时间】:2013-01-24 04:08:30
【问题描述】:

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

我该怎么做?

请帮忙。

提前致谢。

【问题讨论】:

    标签: iphone ios objective-c uitabbarcontroller modalviewcontroller


    【解决方案1】:

    模态视图控制器始终在 iPhone 上全屏显示。如果不想隐藏标签栏,则需要以模态之外的其他方式呈现该视图。

    【讨论】:

      【解决方案2】:

      通过将modalPresentationStyle 设置为.currentContext,我能够“呈现”一个新的视图控制器,另一个,UNDER标签栏。

      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 的视图(我们要呈现的那个)。

      【讨论】:

        【解决方案3】:

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

        [secondViewController.view addSubview:theViewYouWantToShow];

        【讨论】:

          【解决方案4】:

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

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

          或者

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

          【讨论】:

            【解决方案5】:

            你可以通过设置PresentationStyle来模态呈现。这种风格呈现viewController是一个正方形,不占满屏。

            self.modalPresentationStyle = UIModalPresentationFormSheet;
            

            你也可以设置转场:

            self.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-02-13
              • 2019-10-02
              • 2023-03-27
              • 1970-01-01
              相关资源
              最近更新 更多