Objective c Cocoa中的自定义下拉窗口/对话框
Cocoa中的对话窗口有哪些替代方案?我需要创建一个自定义对话框(模式),用户将能够输入一些信息,当他/她按下OK时,我的应用程序将关闭此对话框并处理输入。 因此,本质上,当您添加新文件时,我需要类似于Xcode中的下拉窗口(command+N): [声誉不足,无法发布截图] 到目前为止,我所发现的只是一些旧的列表和主题,人们称之为工作表。但所建议的方法似乎不受欢迎,比如Objective c Cocoa中的自定义下拉窗口/对话框,objective-c,cocoa,modal-dialog,panel,Objective C,Cocoa,Modal Dialog,Panel,Cocoa中的对话窗口有哪些替代方案?我需要创建一个自定义对话框(模式),用户将能够输入一些信息,当他/她按下OK时,我的应用程序将关闭此对话框并处理输入。 因此,本质上,当您添加新文件时,我需要类似于Xcode中的下拉窗口(command+N): [声誉不足,无法发布截图] 到目前为止,我所发现的只是一些旧的列表和主题,人们称之为工作表。但所建议的方法似乎不受欢迎,比如 beginSheet: myCustomSheet modalForWindow: window
beginSheet: myCustomSheet
modalForWindow: window
modalDelegate: self
didEndSelector: @selector(didEndSheet:returnCode:contextInfo:)
contextInfo: nil
还有别的办法吗?
例如,我可以用自己的xib文件创建一个单独的窗口,是否有某种设置使其成为“面板”或“工作表”?我对这些术语有点困惑。你想要的是一张“工作表”。图纸是一个连接到另一个窗口的窗口,它会阻止连接到该窗口的大多数输入
面板只是一种特定类型的窗口NSPanel
是NSWindow
的一个子类。它有一些不同的行为和可能的风格。您可以将面板用作图纸,但不必这样做,也没有多大区别
请注意,图纸是窗口模式,而不是应用程序模式。也就是说,它可以阻止用户在其所连接的窗口中执行其他操作,但不能阻止用户在应用程序的菜单或其他窗口中执行操作。这意味着工作表是异步操作的。开始工作表,然后继续执行,而工作表的工作尚未完成。然后,通常应该允许执行流返回到主事件循环。当工作表完成时,它将调用您指定的一些代码
如果需要同步行为,请改用应用程序模式对话框
用于显示工作表的现代API是-[NSWindow beginSheet:completionHandler::
。您将该消息发送到“正常”窗口(例如文档窗口)。第一个参数是要作为图纸的窗口。完成处理程序是工作表完成时要运行的代码
工作表中的控件通常将其操作指向工作表的窗口控制器(与任何其他窗口一样)。在操作方法中,您可以在父窗口上调用
-[NSWindow endSheet:
或-endSheet:returnCode:
,以完成工作表并确定传递给完成处理程序的结果代码。您可以使用sheetParent
属性获取父窗口。谢谢您的回答,现在更清楚了。谢谢你的帮助。