2012-02-21 38 views
0

我已经构建了iOS 5 iPad应用程序,它使用第二个屏幕。我们有一个管理视图(在iPad上)和一个通过Apple DVI适配器连接的HDMI电视机的外部视图。 iPad视图和电视视图都会从每隔几秒进行一次服务调用获取相同的数据更新。然后,我们将收到的数据作为一系列图表呈现出来;对于电视和iPad视图,图表数据的显示方式非常不同 - 但核心数据字典是相同的。我想知道构建这个解决方案的优雅方法。目前,我有一个视图控制器(admin ipad VC)使用GCD进行服务调用,然后调度NSNotifications来更新另一个(TV)视图控制器上的数据(图表)属性。我正在考虑将服务调用从VC移开,并创建一个在应用程序控制器中初始化的单例。然后,我(以某种方式)将两个VC设置为委托,并使用简单的协议进行更新。我不完全确定这是一种好的方法,还是我应该考虑其他的东西?我甚至可以将两个VC都设置为另一个类的委托,还是通常每个类实例只有一个委托?iOS Airplay viewcontroller数据同步

感谢您的任何意见。

回答

0

为什么不是抽象的图表数据到自己的模型类,你可以在这两个视图控制器共享?模型类可以负责获取新数据。为了让控制器知道更新,他们既可以在模型对象上使用KVO,也可以观察发生更新时从模型对象发送的通知,或者可以为模型对象和每个视图控制器提供一个委托数组成为代表。

似乎没有任何令人信服的理由使它成为一个单身人士,尽管你可以如果你真的想要。

+0

是的,这就是我要说的。创建一个模型,但我不确定在两个活跃的VC之间分享这个模型的“最佳实践”。关于单身人士,这是正在进行服务电话的班级。它在启动时创建并初始化,并继续调用服务器,然后使用该模型更新两个VC。除非必要,否则我不喜欢使用通知;从经验中,你可以很容易地结束一个太离散的应用程序,解决左,右和中心事件,并且没有责任链。 – Ben 2012-02-22 16:44:08