我有一个可能有些不同寻常的问题。我正在开发一个具有两个不同核心数据实体(会话和例程)的应用程序。随后,我在界面构建器中有两个不同的视图控制器来填充这些实体的属性。问题是这两个实体是相同的,除了我需要会话与客户实体和例程之间没有任何关系的多对一关系。
问题是这个。我喜欢在界面构建器中为我的会话和例程类使用相同的视图控制器,有没有一种方法可以编程地根据segue标识符确定接口构建器viewcontroller分配给哪个类?我知道它必须是某种if segue.identifier == "myIdentifier" {
/*code for changing destination view controller's class*/}
声明,但我不确定代码是什么,我也想听听其他方法,以便更有效地做到这一点。
谢谢!
答案 0 :(得分:0)
Storyboard中的视图控制器是某个类的归档对象,您不能将其分配给其他类。 (就像你有一个String
对象并希望将其指定为Int
一样不会很好用)
您可以在destinationViewController
内查看segue的prepareForSegue:
属性,如果它是这样的某个类:
if let dvc = segue.destinationViewController as? MyExpectedVC {
// do something
}
但这可能不是你想要/应该做的。
我会按照您的问题的评论者的说法,并建议您的视图控制器类为您的模型实现配置方法。对于每个类都是单独的一个:
func prepareWithSession(session: Session) {/* ... */}
func prepareWithRoutine(session: Routine) {/* ... */}
或(imho有点好)为视图控制器可以显示的所有类创建一个协议,并且只有一个方法:
func prepareWithDisplayable(session: DisplayableType) {/* ... */}
其中DisplayableType
是一个协议,它定义了这个视图控制器需要知道的所有属性。
您可以在视图控制器中使用自定义逻辑,仅显示特定类型的某些字段。 (例如设置为其他类型隐藏的视图)