在Storyboard中是否可以引用其他Storyboard?

3
我正在开发一个iOS应用程序,并希望将其拆分成几个Storyboard,但问题是我似乎无法找到一种在Storyboard之间设置引用作为入口点的方法。
例如,我希望我的Main.storyboard看起来像这样: --> 认证Storyboard --> 选项卡Storyboard --> ... 我是iOS开发的新手,本以为这很简单,但似乎找不到办法。

你想要多个故事板,例如Login.storyboard、Main.storyboard,但是你不确定如何从不同的故事板中调用控制器? - Chatar Veer Suthar
3个回答

2

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

引用一个Storyboard以在启动时使用

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

enter image description here

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

在代码中引用一个Storyboard

所以在这个例子中,我希望将一个viewcontroller推送到导航控制器上。我想要引用的viewcontroller可能在另一个Storyboard中或者当前正在使用的Storyboard中。代码无所谓......

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

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

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

enter image description here


这正是我所需的。我曾错误地认为Main storyboard必须是起始点。谢谢。 - dk87

1
不要使用多个故事板,使用一个带有多个视图控制器的故事板,它们之间使用segue并嵌入navigationcontroller。例如,为身份验证使用一个视图控制器,类似地为选项卡(tabbarviewcontroller)使用另一个视图控制器。从authenticationVC到tabbarVC提供segue。希望这可以帮助。 :)

0

既然你说你是iOS开发新手,让我为你概括一下:

Interface Builder (IB) 是Xcode内置的一款工具,可以帮助你在不编写任何代码的情况下设计用户界面。 IB能够实现的所有功能也都可以通过编程方式实现。IB支持两种不同类型的文件:XIB文件和Storyboards。

XIB 文件(扩展名.xib)是一个UIView对象集合,你可以使用IB进行设计。

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

结论: 目前没有一种Interface Builder文件类型可以代表XIB或Storyboards的集合。因此,目前无法在Storyboard中引用另一个Storyboard。但是,您仍然可以将您的视图控制器拆分成不同的Storyboards,并通过编程方式在它们之间进行转换。

以下是Stack Overflow上的另一篇文章,可以帮助你开始编写程序来进行过渡效果:

如何从类中编程加载故事板?

希望这可以帮到你。


谢谢您提供的这份详细解释,它帮助我更好地理解了故事板的工作原理。虽然我会接受两个答案,但被采纳的答案提供了一个具体的解决方案,这就是为什么我选择接受它的原因。 - dk87

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接