Objective c 序列化UINavigationController中的所有内容

Objective c 序列化UINavigationController中的所有内容,objective-c,cocoa-touch,ios,Objective C,Cocoa Touch,Ios,我正在开发一个iPad应用程序,看看我是否能在两个几乎相同且运行在不同设备上的应用程序之间模拟“屏幕共享”。这两个应用程序之间的唯一区别是,一个作为服务器,另一个作为客户端,使用aSyncSocket 基本上,只要客户端应用程序上的UINavigationController发生更改,我就会尝试通过序列化viewControllers属性返回的数组来更新服务器应用程序上的UINavigationController 到目前为止,我已经取得了一些成功,但是我无法显示任何子视图(来自视图数组)。因此

我正在开发一个iPad应用程序,看看我是否能在两个几乎相同且运行在不同设备上的应用程序之间模拟“屏幕共享”。这两个应用程序之间的唯一区别是,一个作为服务器,另一个作为客户端,使用aSyncSocket

基本上,只要客户端应用程序上的UINavigationController发生更改,我就会尝试通过序列化viewControllers属性返回的数组来更新服务器应用程序上的UINavigationController

到目前为止,我已经取得了一些成功,但是我无法显示任何子视图(来自视图数组)。因此,一旦在服务器应用程序上更新视图(使用SetViewController),它就会丢失子视图中包含的所有数据


有人做过类似的工作吗?我认为这个问题是在序列化过程中出现的,但我无法确定问题所在(或者可能只是不可能?)。看起来我真的很接近…

为什么选择UINavigationController?看起来很自然的做法是将UIWindow子类化,因为窗口是包含在任何给定时间当前可见的所有视图的视图

我可以看到序列化所有视图并在客户机上复制它们的吸引力,但这也可能会造成很多复杂性。你不仅需要每秒打包并解压10到20次这些视图,还需要两个独立的应用程序来处理事件。当客户端设备上的用户点击按钮时,您会做什么?是否将其发送到服务器进行处理,或者在客户端上进行处理,然后尝试在服务器上复制结果更改


似乎最好向客户端发送窗口的映像,并让客户端将所有事件发送回服务器。我相信这是屏幕共享系统通常的工作方式,可能是因为上面列出的原因。

如果两个应用程序是相同的,为什么你不序列化用户的交互呢?在同一状态下启动两个应用程序,然后在其中一个应用程序上进行任何交互,然后在另一个应用程序上进行复制。

这实际上是我最初的方法,它正是我想要的工作方式;然而,我发现为所有不同视图中按下的每个按钮输入代码很麻烦。我是Obj-C/Cocoa的新手,因此我不确定如何在不为每个用户交互编写特定代码的情况下实现这一点。如果您创建
UIWindow
的子类,并确保使用该子类而不是
UIWindow
(使用标准模板,您只需更改应用程序代理的
窗口
ivar和属性以及
MainWindow.xib
),然后您可以通过提供一个
sendEvent:
方法来收听所有
UIEvent
s。记住将消息转发到超类。哈,您问的问题与我自己问的问题相同。我认为这种方法可能像您所说的那样太复杂了——尽管这只是一个开始的实验。我真的就像你提到的服务器发送窗口图像的想法一样,我将继续考虑这个选项,或者回到Jim的帖子中提到的我的原始选项。