使用Apple OS X Cocoa框架,如何在另一个进程的窗口上发布工作表(下滑模式对话框)?
编辑:澄清一下:
我的应用程序是一个 Finder 扩展,用于执行 Subversion 版本控制 ( http://scplugin.tigris.org/ )。我的应用程序的一部分是一个插件(Finder 的上下文菜单项);然而,我的应用程序的大部分位于单独的守护进程中。出于多种原因,我们选择将几乎所有代码放入守护进程中;该插件仅定义菜单本身,并将 Apple-Events 传递给守护进程。
有时,守护进程需要提示用户提供更多信息。它可以为此在屏幕上弹出一个窗口,但这是破坏性的(随机定位),在我看来,这里的工作流程是合法模式的,例如“选择一个文件,从菜单中选择“提交”,提供提交注释,进行操作。”
进程间合作(例如传递某种引用)是可以接受的:两个进程都是我的,但我想避免将工作表的代码绑定(bind)到主进程中。
最佳答案
真的,听起来你试图让进程间通信发生在 View 级别,这并不是 Cocoa 通常的工作方式。如果你将层分开得更多一点,事情就会容易得多。
为什么不想将工作表代码放入其他进程中?它是 View 代码,而 View 代码本质上是特定于流程的。这里正确的做法可能是向您的插件代码添加一些通用的模态表支持,以及您的守护进程可以调用该代码的 IPC 调用。如果你能让它工作的话,尝试将 View 对象发送到远程进程将是一场噩梦。
您正在用这种方法对抗框架。
关于cocoa - 如何将 Cocoa "sheet"发布到另一个程序的窗口上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65343/