Segues的Upcast ViewController

时间:2018-12-08 11:42:29

标签: swift casting uiviewcontroller downcast

我有两个视图,A和B,都继承自C。

在情节提要中,我将UIViewController定义为C类型。

另一个视图,比方说D,对C有两个选择。

我希望能够根据相关命令投放目的地:

if segue.identifier = "ToA"
{
   // Load view A
}
if segue.identifier = "ToB"
{
   // Load view B
}

我尝试过,投放失败。有可能吗?

我在SO上找到另一个线程,说不是,但是那里有一个回复说这是可能的。我该如何进行铸造?

还是我应该将A和B融合在一起?我真的不想这么做。

1 个答案:

答案 0 :(得分:1)

这是不可能的,因为继承不能像这样工作。 A和B也是C。但是C既不​​是A也不是B。并且C是在执行segue时初始化并推送/呈现/嵌入的内容。

您需要在情节提要中创建两个不同的ViewController A和B。他们可以与您的C.swift文件建立一些IBOutlet / IBAction连接。