【问题标题】:UITabBarController with diffent storyboard file for each ViewController of the TabBarUITabBarController 为 TabBar 的每个 ViewController 具有不同的故事板文件
【发布时间】:2013-07-29 05:52:14
【问题描述】:

我的团队正在开发一个具有 UITabBarController 的应用程序。我们正在使用 Storyboard 来开发界面和流程。

由于我们是一个团队,我们不能将所有流程都放在一个故事板中,因为这会导致与 SVN 同步出现问题。所以,解决方案是to put each tab`s flow in one different storyboard file

故事板之间的连接不是问题,因为我们可以在this tutorial 中看到,创建一个对象来进行连接(例如按钮)。

但是当我将 UITabBarController 放在一个故事板中时,我无法以编程方式设置将为 tabBar 的每个按钮显示的故事板的方式管理底部栏的视图元素(tabBar 本身)。

目前,我在同一个 .storyboard 文件中拥有 TabBar 和 UIViewControllers,正如我们所见:

所以我需要的是通过一个 UITabBarController 连接不同的故事板。该怎么做?

【问题讨论】:

  • 首先对 Xcode 使用 bitbucket 或 git SVN 就像啤酒和葡萄酒对胃一样,然后只需修复情节提要的冲突。
  • 我们不使用 xcode 同步文件。我们使用 xcode 之外的其他工具
  • 我知道女巫的做法很糟糕
  • Bitbucket 是免费的,并且有私有存储库,它有合并控制和自动合并——它可以自动修复冲突,也可以使用合并工具手动修复。然后您可以将 source tree -client 用于 bitbucket。您所拥有的不是编程问题,而是版本管理问题
  • 不。项目的需求很明确:我们需要以模块化的方式开发接口。所以我们需要有不同的 .storyboard 文件。

标签: objective-c xcode uitabbarcontroller uistoryboard


【解决方案1】:

您可以使用 Storyboard 引用将应用程序的各个部分分开并保存在单独的 Storyboard 文件中。使用 UITabBarController 只需 ctrl-link 到引用,并确保将 UITabBarItem 添加到新 Storyboard 中的 ViewController。

【讨论】:

  • 这是真的,但仅限于 >= iOS 9 :)
【解决方案2】:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Yourstoryboard" bundle:nil];

UINavigationController *thisController = [storyboard instantiateViewControllerWithIdentifier:@"YourID"];

mytabBarController.viewControllers = @[phoneViewController];

我仍然认为你应该使用 git :)

【讨论】:

    【解决方案3】:

    您有点错过了故事板的意义,即让您看到应用程序的结构和视图控制器之间的关系。

    听起来您没有从为标签栏控制器使用故事板中获得很多好处,因此以编程方式设置它可能是有意义的,这样您就可以使用单独的故事板自己实例化每个视图控制器。

    或者,您可以在一个故事板中包含标签栏控制器、任何必要的导航控制器和每个导航控制器的根控制器,然后让每个根控制器从其他故事板加载后续视图控制器。

    【讨论】:

    • 感谢@Caleb 的提示。我同意你的看法。你能帮我编写代码以编程方式设置 uitabbar 并在其他 .storyboard 文件中引用与 ViewControllers 的连接吗?我将不胜感激。
    • 这并不难,只需创建您的视图控制器并使用控制器数组创建一个新的标签栏控制器。检查文档。如果遇到困难,请发布您的代码。
    • 这些问题及其答案与您的第一点不一致@Caleb stackoverflow.com/questions/18710757/… stackoverflow.com/questions/20943892/…
    • @Chucky 我不认为他们真的不同意——他们只是指出一个故事板可以变得如此之大以至于它很笨重。不可否认,情节提要确实可以让您看到它们包含的视图控制器之间的关系。您链接的 Q 似乎也不是应用程序设计的闪亮示例 - 例如,很难想象需要 20 个不同表进行设置,除非您采用非常天真的方法使用静态表。跨度>
    猜你喜欢
    • 1970-01-01
    • 2015-03-16
    • 2018-02-01
    • 2012-01-29
    • 1970-01-01
    • 2014-11-11
    • 2014-05-16
    • 2020-08-05
    • 1970-01-01
    相关资源
    最近更新 更多