objective-c - 无法在窗口上打开一张纸两次

标签 objective-c cocoa xcode

我正在窗口上打开一张工作表,第一次打开该工作表时 正确,但如果我关闭它,然后尝试再次打开它就不起作用,我 只需听到系统警报声即可。

- (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];


}

我找不到问题所在,应用程序不会在日志上打印任何错误。

最佳答案

不需要委托(delegate)。

发出蜂鸣声是因为系统认为窗口上已经打开了一张工作表(无论该工作表在技术上是否可见)。这不是最好的错误报告,但也确实如此。

在我的代码表中具有窗口 Controller ,并且我在附加到工作表关闭按钮的每个操作中执行以下两个步骤:

[NSApp endSheet:[windowController window]];
[windowController close];

通过这些步骤,后续工作表能够显示而不会发出蜂鸣声。

关于objective-c - 无法在窗口上打开一张纸两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4667899/

相关文章:

cocoa - 使用 Cocoa 获取当前播放的歌曲

cocoa - 使用通知从 NSTask 实时获取数据不起作用

iphone - NSArray compontentsSeperatedByString 返回无法识别的选择器

ios - 为没有 GCC 的 Xcode 5 编译 FFMpeg?

ios - 使用 Storyboard的 "inner" View 和 UITableViewCell 的内容 View 之间剩余垂直间距的原因是什么?

objective-c - 初始化 boolean 数组 - 返回 null

xcode - 对于 iOS Swift 2 的大量列表字典还有另一种方法吗? -Xcode 卡在索引处

ios - Xcode 5 和图像

objective-c - block 保留命名约定的循环?

objective-c - 设置子类 NSTableCellView 的边框