NSApplication endSheet:没有效果

发布于 2024-09-15 19:03:17 字数 470 浏览 11 评论 0原文

好吧,这确实难倒了我:

我在窗口上创建了一个模态表

-(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 连接并确保窗口和登录窗口存在且处于正常状态。

所以,问题是:我错过了什么吗?

Ok, this is really stumping me:

I create a modal sheet on a window as

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

and try to remove it with

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

but it remains.

I've checked all of the obvious things like IB connections and ensuring that window and loginWindow are present and in the normal state.

So, the question is: Am I missing something?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

与之呼应 2024-09-22 19:03:17

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

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

如果您愿意,您可以使用不同的名称,但它应该接受相同的参数。)

您可以在该方法中执行您需要执行的任何操作,但最终它应该结束with:

[sheet orderOut:self];

这将关闭该工作表。

You have to set up a delegate for the sheet. The delegate should implement a method with a signature like the following:

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

(You can use a different name if you like, but it should accept the same parameters.)

You can do whatever you need to do in that method, but ultimately it should end with:

[sheet orderOut:self];

which will dismiss the sheet.

画骨成沙 2024-09-22 19:03:17

请参阅:在 Cocoa Objective 中创建模态对话框或窗口 - c?

不需要委托。以下内容可以让我驳回并允许稍后回调:

[NSApp endSheet: loginWindow];
[loginWindow orderOut:self];

See: Creating a Modal Dialog or Window in Cocoa Objective-c?

A delegate is not required. The following works for me to dismiss and allows calling it back later:

[NSApp endSheet: loginWindow];
[loginWindow orderOut:self];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文