我在第一次打开纸张时在窗口上打开一张纸 正确,但如果我关闭它,并尝试再次打开它不起作用,我 只是获得系统警报声。
- (IBAction) showSpeedSheet:(id)sender
{
[NSApp beginSheet:addEditPackagePanel
modalForWindow:[[NSApp delegate] window]
modalDelegate:nil
didEndSelector:nil
contextInfo:nil];
}
-(IBAction)endSpeedSheet:(id)sender
{
[NSApp endSheet:addEditPackagePanel];
[addEditPackagePanel orderOut:sender];
}
我找不到什么问题,应用程序不会在日志上打印任何错误。
答案 0 :(得分:4)
不需要代表。
发出蜂鸣声是因为系统认为窗口上已经打开了一张纸(无论该纸是否在技术上可见)。这不是最大的错误报告,但就是这样。
在我的代码表中有窗口控制器,我在附加到工作表关闭按钮的每个操作中执行以下两个步骤:
[NSApp endSheet:[windowController window]];
[windowController close];
通过这些步骤,后续工作表无需发出哔哔声即可显示。
答案 1 :(得分:0)
我认为您可能需要实现模态委托和didEndSelector。应该从did-end选择器调用orderOut。
[NSApp beginSheet:addEditPackagePanel
modalForWindow:[[NSApp delegate] window]
modalDelegate: self
didEndSelector: @selector(didEndSheet:returnCode:contextInfo:)
contextInfo: nil];
和
- (void)didEndSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void*)contextInfo
{
[sheet orderOut:self];
}
我相信只要调用endSheet就会将控制权发送到did-end选择器。