好吧,这真的把我难倒了:
我在窗口上创建了一个模型表,如下所示
-(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存在并处于正常状态。
所以,问题是:我错过了什么吗?
发布于 2010-08-26 23:02:49
您必须为工作表设置一个代理。委托应该实现一个具有如下签名的方法:
- (void)didEndSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo;(如果愿意,您可以使用不同的名称,但它应该接受相同的参数。)
您可以在该方法中做任何需要做的事情,但最终应该以:
[sheet orderOut:self];这将会驳回这张纸。
发布于 2014-08-02 03:34:02
请参阅:Creating a Modal Dialog or Window in Cocoa Objective-c?
委托不是必需的。我可以忽略以下内容,并允许稍后再调用它:
[NSApp endSheet: loginWindow];
[loginWindow orderOut:self];https://stackoverflow.com/questions/3576096
复制相似问题