你们知道在Storyboard中是否可以使用Swift嵌套类作为UIViewController吗?
我正在研究构建项目的不同方法,其中一种是通过将相关类嵌套在同一主类中来对它们进行分组。
让我举例说明:
说我有一个屏幕来显示我的应用程序设置,需要一个UIViewController和一个模型。
我可以创建2个类:SettingsController
和SettingsModel
,但我想知道是否通过将主类Settings
包含嵌套类{{ 1}}和Controller
Model
这样,我可以通过做class Settings {
class Controller: UIViewController {
...
}
class Model {
...
}
}
和Settings.Controller
来使用它们,我认为它们看起来不错。
现在,在使用情节提要时,此效果很好。在情节提要中,当我选择一个视图控制器来设置自定义类时,如果我键入Settings.Model
并按Enter,则该字段将无效并被清除。
所以我的问题是,你们是否知道我在做错什么,或者根本不可能吗?
答案 0 :(得分:2)
当然,是在发布问题之后,我才找到了解决方案,所以我将其分享给后代。
所以我尝试执行此操作时遇到了一个问题:
turtle-bounds
,但Interface Builder则不
看到它是一个有效的类名解决方案很简单,为控制器指定自己的Objc名称:
Settings.Controller
通过执行此操作,可以为嵌套控制器赋予ObjC名称,从而将其公开给Interface Builder。现在,您可以通过填写class Settings {
@objc(SettingsController)
class Controller: UIViewController {
}
...
}
来引用控制器。
答案 1 :(得分:0)
我认为故事板不支持(但),因此与此同时,您需要使用一些解决方法。
如果您只需要语法Settings.Controller
,则可以执行以下操作:(受this answer启发)
不是将您的Settings.Controller
类声明为嵌套类,而是将其声明为独立类SettingsController
:
class SettingsController : UIViewController { ... }
然后在Settings
中添加一个typealias
:
class Settings {
typelias Controller = SettingsController
class Model { ... }
}
现在您可以在情节提要中使用SettingsController
,但在代码中使用Settings.Controller
。