2

我想知道如何在 iPhone XCode 故事板 ViewControllers 中实现多态性。

这是我的问题:我的应用程序中的两个不同的 ViewController 正在连接到一个通用的 ViewController。

这个常见的 ViewController 的行为取决于它所来自的 VC - 执行不同的远程 API 服务器调用和 CoreData 提取(首先它在表中显示所有用户,对于另一个它显示管理员列表 - 用户的子类,我可能会有第三个显示过滤的用户列表)。

这个常见的 ViewController 在我的应用程序中非常重要,并且与许多其他 ViewController 相衔接。因此,对我来说,用子类在 stroyboard 上复制它似乎是不对的。

不幸的是,将用户列表传递给 ViewController 并不是一种选择,因为在这个列表上的不同搜索是在 ViewController 方法中执行和实现的。

通过子类化和使用多态性来实现这些不同的行为是有意义的,并根据源 segue 为情节提要中的 ViewController 分配子类。

有没有办法在 segue 时动态设置 Storyboard ViewController 类?

4

1 回答 1

2

执行不同的远程 API 服务器调用和 CoreData 提取

您真正在这里呼吁的是数据接口与视图接口不同。没关系。您应该拉出一个负责获取数据的单独对象。您可以将该对象传递给视图控制器,而不是对视图控制器进行多态化。这称为策略模式,在 Cocoa 中很常见。

这与委托几乎相同,您也可以在此处使用。当您进行 segue 时,调用视图控制器会在接收视图控制器上设置一个委托。然后该委托负责返回数据对象,再次将接收视图控制器从多态中释放出来。

于 2013-07-30T18:19:33.690 回答