故事板!与 UIStoryboard(名称:“Main”,包:nil)

Kel*_*Lau 5 ios swift

我进入了一个具有以下声明的项目:

UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("asdf") as! AsdfViewController
Run Code Online (Sandbox Code Playgroud)

我一直都是storyboard!这样做的。这是我的理解,storyboard!将永远给我UIStoryboard(name: "Main", bundle: nil)。这是一个危险的假设吗?

我知道UIStoryboard如果您想引用不同的故事板文件,您可能想使用官方构造函数,但是storyboard!如果您确定要实例化的 VC 是其中的一部分,将其缩写为安全Main.storyboard吗?

Mid*_* MP 5

如果您self.storyboard从另一个故事板文件上的视图控制器调用,它将引用该特定故事板;不是主要的故事板。通过提到:

UIStoryboard(name: "Main", bundle: nil)
Run Code Online (Sandbox Code Playgroud)

您可以确保始终引用主故事板。

在以下情况下:

  1. 只有一个故事板文件
  2. 实例化一个视图控制器,它也包含在当前视图控制器的故事板中

使用self.storyboard就足够了。

  • 如果您的视图控制器不是从故事板创建的,那么即使您只有一个故事板文件 `self.storyboard` 也可能不够。 (2认同)