如何允许标签栏项具有多个视图控制器

Posted

技术标签:

【中文标题】如何允许标签栏项具有多个视图控制器【英文标题】:How to allow a Tab Bar Item to have multiple view controllers 【发布时间】:2017-01-26 23:13:26 【问题描述】:

我已经被这个问题困扰了几天了,我们将不胜感激。

我有一个UITabBarController,它有四个TabBarItems。

我想根据用户是否登录来确定向用户显示什么视图控制器。

例如,当用户未登录时,我想根据选择的TabBarItem 显示不同的登录屏幕 - 每个登录看起来都不同。当用户登录时,我想显示所选TabBarItem的正常内容

我正在考虑为每个标签栏项目设置多个 ViewControllers。当用户选择TabBarItem时,判断用户是否登录,然后显示正确的```ViewController.我不确定这是否是正确的方法以及如何实现这种行为。

更新: 这是我想出的解决方案,但想知道每个人的想法 - 这是否是正确的方法。 这就是我的故事板的样子:

这个想法是,当用户登录时,我会显示登录视图控制器,当用户未登录时,我会显示已注销的视图控制器。

我将使用self.present(...) 更改登录和注销ViewControllers。

【问题讨论】:

能否请添加您当前的代码 【参考方案1】:

您可以使用setViewControllers 更改显示的标签。只需在用户登录或注销时设置所需的 viewController 数组即可。

class TabBarController: UITabBarController 
    func onMyLogin() 
        setViewControllers(myNormalViewControllers, animated: false)
    
    func onMyLogout() 
        setViewControllers(myUnidentifiedViewControllers, animated: false)
    

【讨论】:

感谢您的建议。我今天会试试看。我还用我想到的可能解决方案更新了我的问题。很想知道你的想法是什么 @breaktop 您的解决方案也有效。您希望如何为两种状态之间的过渡设置动画是一个品味问题。在目前的情况下,我更喜欢使用原生 animated: true 的单个 TabBarController 的解决方案。 你能在客观c中给出答案吗

以上是关于如何允许标签栏项具有多个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何在特定标签栏项而不是其他项下添加标题

如何在 1 项标签栏控制器中制作顶部标签栏以快速显示多个视图控制器?

如何创建一个像 Instagram 主页一样的页面视图控制器,它也可以滚动标签栏?

如何在1项标签栏控制器中制作顶部标签栏以在swift中显示多个视图控制器?

如何将标签栏项目中的项目链接到另一个视图控制器

iPhone dev - 标签栏视图控制器的缓存值