【问题标题】:Is it possible to reference other Storyboards within Storyboards?是否可以在 Storyboard 中引用其他 Storyboard?
【发布时间】:2016-08-09 02:47:00
【问题描述】:

我正在开发一个 iOS 应用程序,我想将其拆分为几个 Storyboard,问题是我似乎无法找到一种方法来设置 Storyboard 之间的引用作为入口点。

例如,我希望我的 Main.storyboard 看起来像这样:

--> Authentication Storyboard --> Tabbed Storyboard --> ...

我是 iOS 开发的新手,我希望这很简单,但似乎找不到方法。

【问题讨论】:

  • 你想要不止一个storyboard,比如Login.storyboard,Main.storyboard,你对如何从不同的storyboard调用Controllers感到困惑?

标签: ios iphone swift interface-builder


【解决方案1】:

是的,您可以在一个项目中使用多个 Storyboard,但是不,您不能直接从另一个 Storyboard 中引用它们。

引用故事板以在启动时使用

您的项目目标可以使用其中包含的任何故事板。故事板入口点的参考可以在目标设置中找到。

  1. 选择目标
  2. 选择常规选项卡
  3. 在主界面的下拉列表中选择最初使用的情节提要。

在代码中引用故事板

所以在本例中,我希望将视图控制器推送到导航控制器上。我要引用的视图控制器可能在不同的情节提要中或我正在使用的当前情节提要中。代码不在乎...

    if let storyboard = UIStoryboard(name: "A2ndStoryboard", bundle: nil) {
      if let vc = storyboard.instantiateViewControllerWithIdentifier("SomeViewController" as String) {

        navigationController?.pushViewController(vc, animated: true)
      }
    }

当您想像这样引用 ViewController 时,您需要确保它们在 Storyboard 中被正确识别:

【讨论】:

  • 这正是我所需要的。我有一个错误的想法,即主故事板必须是起点。谢谢。
【解决方案2】:

不要使用多个故事板。使用一个带有多个viewcontrollerssegueembed navigationcontroller 的故事板。例如,使用一个视图控制器进行身份验证,就像另一个视图控制器用于选项卡(tabbarviewcontroller)一样。从 authenticationVC 到 tabbarVC。希望这会有所帮助。 :)

【讨论】:

    【解决方案3】:

    正如你所说,你是 iOS 开发的新手,让我试着为你回顾一下:

    Interface Builder (IB) 是 Xcode 内置的工具,可帮助您设计用户界面而无需任何代码。 IB 可以做的所有事情也可以通过编程来完成。 IB 支持两种不同类型的文件:XIB 文件和 Storyboard。

    XIB 文件(扩展名 .xib)是您可以使用 IB 设计的 UIView 对象的集合。

    Storyboards(扩展名.storyboard)是UIViewController 对象的集合,它们都具有view 属性,您可以使用IB 进行设计。

    结论: (目前)不存在代表 XIB 或 Storyboard 集合的 Interface Builder 文件类型。因此到目前为止,您无法在 Storyboard 中引用 Storyboard。相反,您仍然可以将视图控制器拆分为不同的 Storyboard,并在它们之间以编程方式进行转换。

    这是关于 SO 的另一个主题,可帮助您开始进行程序化转换:

    How can I load storyboard programmatically from class?

    我希望这会有所帮助。

    【讨论】:

    • 感谢您的分解,它帮助我更好地理解故事板应该如何工作。接受的答案有一个具体的解决方案,这就是我接受它的原因,尽管我会接受两者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2015-08-21
    • 2016-09-13
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    相关资源
    最近更新 更多