我正在开发一款iPad应用程序,看看我是否可以模仿两个几乎相同且在不同设备上运行的应用程序之间的“屏幕共享”。两个应用程序之间的唯一区别是,一个用作服务器,另一个用作客户端,使用一个SyncSocket。
基本上,每当客户端应用程序上的UINavigationController通过序列化viewControllers属性返回的数组而更改时,我都会尝试更新服务器应用程序上的UINavigationController。
到目前为止我已经取得了一些成功,但是我很难将任何子视图(来自视图数组)显示出来。因此,一旦在服务器应用程序上更新视图(使用setViewControllers),它就会丢失子视图中包含的所有数据。
有没有人在做类似的事情?我认为这个问题是在序列化过程中,但是我无法确定问题(或者可能只是不可能?)。好像我真的很接近......
答案 0 :(得分:0)
为什么选择UINavigationController?看起来自然而然的事情就是子类化UIWindow,因为窗口是包含当前在任何给定时间可见的所有视图的视图。
我可以看到序列化所有视图并在客户端上重现它们的吸引力,但这也可能会产生很多复杂性。您不仅需要打包,然后每秒打开这些视图十到二十次,而且还有两个独立的应用程序竞争处理事件。当客户端设备上的用户点击按钮时,您会怎么做?将其发送到服务器进行处理,或在客户端上处理它,然后尝试在服务器上重现结果更改?
似乎最好向客户端发送窗口图像,让客户端将所有事件发送回服务器。我相信这是屏幕共享系统通常工作的方式,可能是出于上述原因。
答案 1 :(得分:0)
如果两个应用程序完全相同,为什么不将用户的交互序列化呢?在相同的状态下启动两个应用程序,然后在一个上进行任何交互,在另一个上重现。