Mac OS X上的简单Cocoa模式窗口对话框

时间:2010-07-16 22:18:16

标签: objective-c cocoa xcode modal-dialog

我正在将插件从32位移植到64位,这实际上是在C ++中。由于64位不再支持Carbon,因此我必须将一些代码移植到Cocoa。我需要的唯一Cocoa帮助是如何创建一个简单的模态窗口(不是工作表),它有两个按钮,OK和Cancel,并给我一个来自用户的字符串输入。我创建了一个Cocoa nib,但对Objective-C没有任何线索。我现在可以开始学习Objective-C,但这需要一段时间,这是我现在唯一需要的代码片段。

代码段会是什么样的?

2 个答案:

答案 0 :(得分:2)

如果这就是你所需要的,你可以通过使用CFUserNotification API来避免使用Cocoa。

答案 1 :(得分:2)

无论你想做什么,你都需要学习一些Objective-C和Cocoa,因为没有“一个系统级别的调用”来呈现一个模态面板。

至少,您需要为面板创建一个NSWindowController子类,它将充当其nib文件的文件所有者,并管理其控件与其操作的任何数据之间的交互。然后你需要将它传递给-[NSApplication runModalForWindow:]并处理结果,或者-[NSApplication beginModalSessionForWindow:]并自己处理运行和/或停止模态会话。

这意味着在Objective-C中编写针对Cocoa框架的编码。

幸运的是,由于您刚刚开始使用消息,文本字段和几个按钮,因此这将非常简单。但这不仅仅是一个假设的NSGetTextInput()函数的问题--Cocoa避开了这样的事情,支持抽象,可以用简单和可扩展的方式拼凑在一起。

例如,如果您决定不仅需要文本输入而且还需要复选框,则必须使用上述内容替换您的假设NSGetTextInput()。但是通过首先执行上述操作,添加该复选框将成为额外工作的几秒钟。或者为文本输入添加有趣的验证。或者使用对象中的数据预填充文本输入。或者在模态对话框中实现超时(包括显示倒数计时器)。 (现在非常不喜欢模态......)或者其他任何变化。