好吧,这真让我难堪:
我在窗口上创建一个模式表

-(IBAction) login: (id) sender {
[NSApp beginSheet:loginWindow
   modalForWindow:window
    modalDelegate:nil
   didEndSelector:nil
      contextInfo:nil];
}

试着用
-(IBAction) loginWindowCancelPressed:   (id) sender {
debugLog(@"cancel");
[NSApp endSheet:loginWindow];
}

但它仍然存在。
我已经检查了所有明显的东西,比如ib连接,并确保window和loginwindow存在并且处于正常状态。
所以,问题是:我遗漏了什么吗?

最佳答案

您必须为该表设置委托。委托应实现具有如下签名的方法:

- (void)didEndSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo;

(如果您喜欢,可以使用不同的名称,但它应该接受相同的参数。)
您可以在该方法中做任何需要做的事情,但最终应该以:
[sheet orderOut:self];

它会把这张纸扔掉。

关于objective-c - NSApplication endSheet:无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3576096/

10-13 03:34