如何使用故事板为我的视图控制器编写和调用指定的初始化程序来初始化私有 属性?
How can I write and call a designated initializer for my view controller to initialize a private property, using storyboards?
我想在 Swift 中为我的视图控制器编写一个指定的初始化程序来初始化私有 属性。我了解如何在代码中执行此操作,但我正在努力了解如何使用情节提要来完成此操作。
我的自定义游戏视图控制器是我的导航控制器的根视图控制器,它包含在一个容器视图控制器中
由于所有包含和视图控制器的创建都是从故事板自动发生的,我能想到的唯一解决方案是将我的私有 属性 声明为 public 属性 ,所以我可以在创建游戏视图控制器后为其分配一个值。这似乎是一个 hack,因为我只会将其声明为 public 以便使用故事板。我的理解是否正确,或者代码中是否有一点可以干预并调用我的游戏视图控制器的指定初始化程序?
提前感谢您的智慧!
基本上,你不能。正如您所发现的,当您从情节提要中实例化视图控制器时,您无法控制所使用的初始化程序。
这是在 Cocoa 中使用真正的依赖注入模式的障碍之一。
您最好的办法是使用 prepareForSegue
在新创建的视图控制器上设置属性。
我想在 Swift 中为我的视图控制器编写一个指定的初始化程序来初始化私有 属性。我了解如何在代码中执行此操作,但我正在努力了解如何使用情节提要来完成此操作。
我的自定义游戏视图控制器是我的导航控制器的根视图控制器,它包含在一个容器视图控制器中
由于所有包含和视图控制器的创建都是从故事板自动发生的,我能想到的唯一解决方案是将我的私有 属性 声明为 public 属性 ,所以我可以在创建游戏视图控制器后为其分配一个值。这似乎是一个 hack,因为我只会将其声明为 public 以便使用故事板。我的理解是否正确,或者代码中是否有一点可以干预并调用我的游戏视图控制器的指定初始化程序?
提前感谢您的智慧!
基本上,你不能。正如您所发现的,当您从情节提要中实例化视图控制器时,您无法控制所使用的初始化程序。
这是在 Cocoa 中使用真正的依赖注入模式的障碍之一。
您最好的办法是使用 prepareForSegue
在新创建的视图控制器上设置属性。