我想知道如何在iPhone XCode情节板ViewControllers中实现多态性。
这是我的问题:我的应用程序中有两个不同的ViewController正在分段到一个公共的ViewController。
这个常见的ViewController的行为不同,这取决于它所从的VC-执行不同的远程API服务器调用和CoreData获取(第一个它在表中显示所有用户,第二个它显示管理员列表-用户的子类,我可能有第三个它将显示过滤后的用户列表)。
这个常见的ViewController在我的应用程序中非常集中,并与许多其他ViewController相分离。因此,对我来说,在stroyboard上用一个子类复制它似乎是不对的。
不幸的是,将用户列表传递给ViewController不是一个选项,因为对该列表的不同搜索是在ViewController方法中执行和实现的。
通过子类化和使用多态性来实现这些不同的行为是有意义的,并根据原始分段为故事板中的ViewController分配子类。
分段时有没有任何方法可以动态设置情节提要ViewController类?
执行不同的远程API服务器调用和CoreData获取
您在这里真正指出的是,数据接口与视图接口不同。没关系。您应该拉出一个单独的对象来负责获取数据。您可以将该对象传递给视图控制器,而不是对视图控制器进行变形。这被称为战略模式,在Cocoa中非常常见。
这几乎与委派相同,您也可以在此处使用委派。分段时,调用视图控制器会在接收视图控制器上设置一个委托。然后,该委托负责返回数据对象,再次将接收视图控制器从多态性中释放出来。