NSView作为模态表

时间:2015-09-18 08:29:08

标签: modal-dialog nsview

我可以为NSWindow创建一个模型表,我使用了以下连接代码。

[NSApp beginSheet:self.view modalForWindow:[[NSApplication sharedApplication] mainWindow] modalDelegate:self didEndSelector:nil contextInfo:nil];

我无法为NSView创建模态,是否可以为NSView创建模态表?

1 个答案:

答案 0 :(得分:1)

当然可以,但你必须将它嵌入新创建的窗口中。 e.g。

  NSView *view = [[NSView alloc] initWithFrame:NSMakeRect(100, 100, 300, 300)];
  self.windowSheet = [[NSWindow alloc] initWithContentRect:[view frame] styleMask:NSTitledWindowMask backing:NSBackingStoreBuffered defer:YES];
  [NSApp beginSheet:self.windowSheet modalForWindow:[[NSApplication sharedApplication] mainWindow] modalDelegate:self didEndSelector:nil contextInfo:nil];

正如您在文档中看到的那样,beginSheet的可接受参数只是窗口或其子类(例如NSPanel)

- (void)beginSheet:(NSWindow *)sheet modalForWindow:(NSWindow *)docWindow modalDelegate:(nullable id)modalDelegate didEndSelector:(nullable SEL)didEndSelector contextInfo:(null_unspecified void *)contextInfo NS_DEPRECATED_MAC(10_0, 10_10, "Use -[NSWindow beginSheet:completionHandler:] instead");