我想知道如何在iPhone XCode故事板ViewControllers中实现多态性。
这是我的问题: 我的应用程序中的两个不同的ViewControllers正在转向常见的ViewController。
这个常见的ViewController的行为有所不同,具体取决于它所引用的VC - 执行不同的远程API服务器调用和CoreData提取(第一个呈现表中的所有用户,另一个呈现管理员列表 - 子类用户,我可能会有第三个用户提供过滤后的用户列表。)
这个常见的ViewController在我的应用程序中是非常中心的,并且与许多其他ViewControllers相对应。因此,我似乎没有权利用子类在stroyboard上复制它。
遗憾的是,将用户列表传递给ViewController不是一个选项,因为在此列表上的不同搜索是在ViewController方法中执行和实现的。
通过子类化和使用多态来实现这些不同的行为是有意义的,并根据原始segue将故事板中的ViewController指定为子类。
有没有办法在segueing时动态设置Storyboard ViewController类?
答案 0 :(得分:2)
执行不同的远程API服务器调用和CoreData提取
您在这里真正要求的是数据接口与视图接口不同。没关系。您应该提取一个负责获取数据的单独对象。您可以将该对象传递给视图控制器,而不是将视图控制器多态化。这被称为策略模式,在Cocoa中很常见。
这几乎与委托相同,你也可以在这里使用。 segue时,调用视图控制器在接收视图控制器上设置委托。然后该委托负责返回数据对象,再次使接收视图控制器从多态中解放出来。