ios - 在 Storyboard中使用 Swift 嵌套类作为 UIViewController

标签 ios swift cocoa-touch storyboard

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

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

让我用一个例子来解释:

假设我有一个用于显示我的应用程序设置的屏幕,它需要一个 UIViewController 和一个模型。
我可以创建 2 个类:SettingsControllerSettingsModel,但我想知道通过主类 Settings 来构造它是否不是很好 包含嵌套类 ControllerModel 就像这样

class Settings {
   class Controller: UIViewController {
      ...
   }
   class Model {
      ...
   }
}

这样我就可以通过执行 Settings.ControllerSettings.Model 来使用它们,我认为这看起来很不错。

现在这在使用 Storyboard 时效果很好。在 Storyboard 中,当我选择一个 View Controller 来设置自定义类时,如果我输入 Setting.Controller 并按回车键,该字段不会验证并被清除。

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

最佳答案

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

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

  1. 嵌套类是使用点的引用 表示法:Settings.Controller 但 Interface Builder 没有 将其视为有效的类名

解决方案很简单,给 Controller 它自己的 Objc 名称:

class Settings {
   @objc(SettingsController)
   class Controller: UIViewController {
   }
   ...
}

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

关于ios - 在 Storyboard中使用 Swift 嵌套类作为 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57008827/

相关文章:

ios - 如何在 swift 3 的其他功能中使用服务器响应和数据

objective-c - UILocalNotification 不再工作了?

ios - 如何将核心数据关系设置为 NSNull()?

iphone - Obj-C,引用计数的对象在释放后使用吗?

ios - UICollectionView 单元格在 reloadData() 上不正确地调整大小

ios - 通用 UITableView

ios - Swift textview 增长方向

iphone - UITableViewCell 奇怪的宽度?

iphone - 如何在 iPhone 上的 uinavigationbar 上创建信息按钮

ios - 按钮与预期的 iO​​S Autolayout 不完全相同