【问题标题】:how to connect multiple views to a single tab bar item in swift?如何快速将多个视图连接到单个标签栏项目?
【发布时间】:2017-04-16 14:17:06
【问题描述】:

我有一个标签栏控制器,它有两个项目连接到两个视图控制器(比如 A 和 B)现在我想添加第三个视图控制器(比如 C)。但我不想在标签视图中添加第三个图标。当用户选择第二个图标时,它应该根据用户是否登录来呈现 B 或 C。

【问题讨论】:

  • 如果有人反对,至少告诉我你为什么反对?
  • 你可以在这里添加你到目前为止所做的事情吗?
  • @IqbalInzamam:当人们在寻求帮助之前似乎没有尝试为自己提出解决方案时,问题通常会在 Stackoverflow 上被否决。您应该尝试在您的问题中描述您对可能方法的想法,并具体询问为什么这种方法不起作用或是否有更好的替代方案。
  • 老兄:如果你想在这里得到有用的答案,至少要花时间正确设置你的问题。我刚刚修复了您的图片,该图片仅与标题“在此处输入图片描述”相关联。否则你会得到更多的反对票,甚至更糟:没有合格的答案。

标签: ios swift tabview


【解决方案1】:

只需为要根据上下文显示不同视图的选项卡栏项目创建另一个视图控制器。我们称之为RouterViewController。然后将决定显示哪个视图控制器所需的信息传递给RouterViewController 并在那里实现必要的逻辑。

RouterViewController 你现在可以呈现你想要的任何视图控制器(没有动画)。有很多方法可以做到这一点,例如:

  • 将您的RouterViewController 设为UINavigationController 的子类,并动态设置其rootViewController 属性。
  • 将您的RouterViewController 设为容器视图控制器,并相应地嵌入所需的视图控制器。
  • 从您的RouterViewController 以模态方式(无动画)呈现视图控制器。 (我个人不赞成这个选项,因为呈现模态视图控制器是为了其他目的。)

等等

【讨论】:

  • 谢谢。我正在尝试您建议的第一种方式。所以我添加了一个导航控制器作为选项卡控制器的第二项。然后我不明白在哪里设置导航控制器的rootViewController。是否在tabBarController的viewDidLoad中,如何设置?请帮帮我。
  • 我怀疑您使用的是故事板?如果是: 1. 将您的导航控制器添加为标签栏控制器的第二个标签。 2. 创建UINavigationController 的子类并命名为RouterViewController。 3. 在情节提要中选择导航控制器并将其类设置为RouterViewController。 4.在RouterViewControllerviewDidLoad()方法中设置根视图控制器如下:viewControllers = [theViewControllerYouWantToShow]
  • 这可能是一个非常愚蠢的问题。对不起,我对 ios 很陌生。我按照你说的做了,我如何连接 UINavigationController 和 UIController (B & C),通过哪种类型的 segue。我做了休闲 if (...){ viewControllers = [FirstViewController()] }else{ viewControllers = [SecondViewController()] } 但是当我单击第二个选项卡图标时,它会加载一个黑屏导航 ui 我已附加故事板问题中的图表
  • 你不是用segues来做的,你是在代码中做的。但是,如果您只是实例化各自视图控制器 (FirstViewController()) 的实例,您将获得一个带有空(黑色)视图的视图控制器,因为它没有以任何方式链接到情节提要。为了链接它,您需要在代码中获取对故事板的引用,然后在其上调用instantiateViewController(withIdentifier:)。只需谷歌“从情节提要中实例化视图控制器”,您就会找到解决方案。
猜你喜欢
  • 1970-01-01
  • 2013-04-17
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
相关资源
最近更新 更多