【问题标题】:Upcast ViewControllers for Segues用于 Segue 的 Upcast ViewController
【发布时间】:2018-12-08 11:42:28
【问题描述】:

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

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

另一个视图,比如说 D,对 C 有两个转义。

我希望能够根据相关的 segue 投射目的地:

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

我已经尝试过了,但投射失败。有可能吗?

我在 SO 上发现了另一个帖子说它不是,但是那里有一个回复说它是可能的。我怎样才能使这个铸造工作?

或者我应该将 A 和 B 融合在一起吗?我真的不想那样做。

【问题讨论】:

  • 什么转换失败了?

标签: swift casting uiviewcontroller downcast


【解决方案1】:

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

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

【讨论】:

  • 是的,我就是这么想的,但是没有办法只使用一个 ViewController 吗?只是为了最小化情节提要中的对象
  • 这取决于您的设置。 A 和 B 之间实际上共享什么?你所有的用户界面,但不同的逻辑?您可以对 A 和 B 执行 segues,将 C 作为 childviewcontroller 嵌入。然后可以通过委托模式添加不同的逻辑。但正如所说,这取决于您的设置。也许您可以为您的问题添加更多详细信息。
  • 你也可以看看这里吗? stackoverflow.com/questions/53681003/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-03
相关资源
最近更新 更多