【问题标题】:Use Segmented Control with TabBarController without TabBar (on bottom) disappears使用带有 TabBarController 的分段控件而没有 TabBar(底部)消失
【发布时间】:2016-07-05 18:32:24
【问题描述】:

我想在我的应用程序的联系人 ViewController 中使用分段控件在联系人表单和联系人详细信息之间进行选择。联系人 ViewController 由 TabBarController 管理。但是当使用 Segmented Control 切换时,底部的 TabBar 会消失。

我在这里上传了一个示例项目:SegmentedControlTest

有没有简单的方法来解决这个问题?

问候, 大卫。

【问题讨论】:

    标签: ios xcode swift uitabbarcontroller uisegmentedcontrol


    【解决方案1】:

    您可以保持当前结构:

    1. 在 NavigationController 中嵌入 ContactFormVC(编辑器 -> 嵌入 -> NavigationController)并在 NavigationController 属性上取消选中“显示导航栏”
    2. 在 ContactFormVC 和 ContactDetailsVC 上都将其“presentation”属性(在“Transition Style”下)设置为“Current Context”;您的故事板将如下所示

    您应该将过渡更改为 push 和 pop 而不是“显示”,否则您将继续添加到导航堆栈上。通过代码很容易做到,我无法通过情节提要找到如何做到这一点。我还建议按照先前答案的建议更改视图控制器的结构。

    我鼓励你这样做的方式是使用single view controller with multiple container views

    *将 .swift 代码连接到情节提要。确保自定义类部分的类名与类名相同。在这种情况下,它是“ViewController.swift”

    【讨论】:

    • 您好,感谢您的回答。我自己已经找到了本教程,并且正在尝试。
    • 由于某种原因,我无法将任何东西连接到 ViewController.swift。你知道为什么吗?
    • 这可能是因为该类没有连接到情节提要上的场景/VC。我将在我的答案中添加屏幕截图
    • 现在似乎可以使用,也可以使用 TabBarController。非常感谢您的帮助。
    • 那可能就是问题所在。在新项目中,第一个场景和班级是相互关联的。但是你在自己添加新的 VC 时应该记住这一点
    【解决方案2】:

    我下载了您的示例项目。 由于您的segue类型是show,并且您不想消失标签栏,我想您只想将form viewdetail view交换。不显示另一个视图控制器。

    您可以通过创建详细视图而不是详细视图控制器来解决它。

    另一种解决方案是您可以更改UITabBarControllerviewControllers

    【讨论】:

    • 您好,感谢您帮助我。你的想法听起来很合理。我最好只更改视图,而不是整个 ViewController。我也尝试过,但没有奏效。该怎么做?
    • 您可以通过 viewcontroller 拥有两个视图。并在收到 valuechanged 事件时使用 addSubview:removeFromSuperview 更新视图。
    • 我以前从未听说过这个。你有我的链接吗?
    • @David,您可以查看我刚刚发布的答案。在最底部,我添加了一个指向教程页面的链接,它应该可以帮助您完成您想做的事情。
    • 非常感谢@DicksonLeonard。
    猜你喜欢
    • 2011-09-08
    • 1970-01-01
    • 2019-01-20
    • 2021-09-10
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    相关资源
    最近更新 更多