在故事板中使用 Swift 嵌套类作为 UIViewController

Tho*_*mas 3 cocoa-touch storyboard ios swift

你们知道是否可以在 Storyboard 中使用 Swift 嵌套类作为 UIViewController 吗?

我正在研究构建项目的不同方法,其中之一是通过将相关类嵌套在同一个主类中来对它们进行分组。

让我用一个例子来解释一下:

假设我有一个用于显示应用程序设置的屏幕,它需要 UIViewController 和模型。
我可以创建 2 个类:SettingsController和,但我想知道通过包含嵌套类的主类SettingsModel来构造它是否会更好SettingsControllerModel

class Settings {
   class Controller: UIViewController {
      ...
   }
   class Model {
      ...
   }
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以边做边用它们Settings.Controller,Settings.Model我认为这看起来很不错。

现在,除了使用故事板之外,这一切都很好。在 Storyboard 中,当我选择视图控制器来设置自定义类时,如果我输入Setting.Controller并按 Enter 键,则该字段不会验证并被清除。

所以我的问题是你们知道我做错了什么或者这根本不可能吗?

Tho*_*mas 5

当然,在发布问题后我找到了解决方案,因此我将其分享给后代。

所以我尝试这样做的方式有一个问题:

  1. 嵌套类是使用点符号的引用:Settings.Controller但 Interface Builder 不会将其视为有效的类名

解决方案很简单,为控制器提供自己的 Objc 名称:

class Settings {
   @objc(SettingsController)
   class Controller: UIViewController {
   }
   ...
}
Run Code Online (Sandbox Code Playgroud)

通过这样做,您可以为嵌套控制器指定一个 ObjC 名称,从而将其暴露给 Interface Builder。现在您可以通过填写来引用控制器SettingsController。