首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSApplication endSheet:没有效果

NSApplication endSheet:没有效果
EN

Stack Overflow用户
提问于 2010-08-26 22:26:31
回答 2查看 4K关注 0票数 13

好吧,这真的把我难倒了:

我在窗口上创建了一个模型表,如下所示

代码语言:javascript
复制
-(IBAction) login: (id) sender {
[NSApp beginSheet:loginWindow 
   modalForWindow:window 
    modalDelegate:nil 
   didEndSelector:nil 
      contextInfo:nil];
}

并尝试使用以下命令将其删除

代码语言:javascript
复制
-(IBAction) loginWindowCancelPressed:   (id) sender {
debugLog(@"cancel");
[NSApp endSheet:loginWindow];
}

但它仍然存在。

我已经检查了所有明显的东西,比如IB连接,并确保window和loginWindow存在并处于正常状态。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-26 23:02:49

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

代码语言:javascript
复制
- (void)didEndSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo;

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

您可以在该方法中做任何需要做的事情,但最终应该以:

代码语言:javascript
复制
[sheet orderOut:self];

这将会驳回这张纸。

票数 20
EN

Stack Overflow用户

发布于 2014-08-02 03:34:02

请参阅:Creating a Modal Dialog or Window in Cocoa Objective-c?

委托不是必需的。我可以忽略以下内容,并允许稍后再调用它:

代码语言:javascript
复制
[NSApp endSheet: loginWindow];
[loginWindow orderOut:self];
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3576096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档