如何将窗口放在单独的NIB中,给它自己的NSWindowController,让它作为工作表滑出?
(这是典型的表格吗?)
我正在尝试从主窗口显示自定义工作表(从父窗口的标题栏向下滑动的窗口)。我想,我想做的是标准的,但是我找不到明确的例子或解释如何做到我想要的。
我想做什么:
- (void)showCustomSheet: (NSWindow *)window
// User has asked to see the custom display. Display it.
{
if (!settingsSheet)
//Check the settingsSheet instance variable to make sure the custom sheet does not already exist.
[NSBundle loadNibNamed:@"SettingsSheet" owner: self];
//BUT HOW DOES THIS MAKE settingsSheet NOT nil?
[NSApp beginSheet: settingsSheet
modalForWindow: window
modalDelegate: self
didEndSelector: @selector(didEndSheet:returnCode:contextInfo:)
contextInfo: nil];
// Sheet is up here.
// Return processing to the event loop
}
请原谅以下简单易懂的问题:
loadNibName:owner:
时,我不希望owner
成为self
,因为这会让我的应用委托“MyCustomSheet”的所有者 - 这就是我的{SettingsWindowsController
1}}应该是为了。但是,我不知道如何使此方法中的所有者SettingsWindowsController
。loadNibName:owner:
会立即将窗口显示为普通窗口,而不是从主窗口滑出的工作表。beginSheet:modalForWindow:etc
会导致“模态会话需要模态窗口”。我很确定这是因为我制作了Nib的所有者self
(正如我已经提到的那样)。settingsSheet
“关联” - 但它们显然与相关,因为代码首先检查:if (!settingsSheet)
(我已将此标记为//BUT HOW DOES THIS MAKE settingsSheet NOT nil?
)感谢您耐心阅读所有这些内容!
答案 0 :(得分:10)
创建SettingsWindowController
的实例,使用initWithWindowNibName:
您不希望在发布时看到它。
见1.
您的实例变量可用于SettingsWindowController