我有一个 NIB,其中包含两个窗口,一个是应用程序的主窗口在启动时可见,另一个是自定义工作表(因此在启动时不可见)。当需要该表时,我的控制器调用:

[NSApp beginSheet: sheetWindow modalForWindow: mainWindow modalDelegate: self didEndSelector: @selector(didEndSheet:returnCode:contextInfo:) contextInfo: nil];

显示工作表窗口并启动模态会话, 该窗口有一个标准的 Aqua 标题栏,未“连接”到主窗口,并且可以像常规窗口一样移动。不用说,这是不可取的:-)。为什么工作表窗口不会像以这种方式开始时工作表通常所做的那样从它运行的窗口中“弹出”?

我想知道我是否在控制器的内部开始工作表 -awakeFromNib 可能会产生影响,因此我将工作表移至稍后可以触发的按钮操作。这并没有改变行为。我没有想到还有什么可以尝试的。我的目标是 10.5 SDK,使用 Xcode 3.1。

编辑: 所以看起来我已经创建了一个模式对话框;工作表和应用程序模式对话框均以 -beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo: 方法。但是我如何表明我的窗口应该是一张纸并且 不是 模式对话框?

有帮助吗?

解决方案

如果主窗口是零则该表将被显示为一个窗口/对话框。

其他提示

几天前,这件事发生在我身上:

  • 您忘记设置 窗户 窗户控制器的插座(文件的所有者 Nib 文件的一部分)。正如 Nathan 所指出的,您可能会看到 -[NSWindowController window] 方法返回 nil。
  • 您还必须取消选中 启动时可见 工作表的选项。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top