OSX - Cocoa - 关闭工作表时出现异常 [英] OSX - Cocoa - Exception when closing a sheet
本文介绍了OSX - Cocoa - 关闭工作表时出现异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在我的应用程序中使用工作表。
I am playing with using a sheet in my app.
我有一个测试项目设置来寻找我的方式。
I have a little test project setup to find my way.
我有这个代码工作:
- (IBAction)activateSheet:(id)sender {
if (!_sheet)
[NSBundle loadNibNamed:@"Sheet" owner:self];
[NSApp beginSheet:self.sheet
modalForWindow:[[NSApp delegate] window]
modalDelegate:self
didEndSelector:NULL
contextInfo:NULL];
}
但不推荐使用loadNibNamed方法。
but the loadNibNamed method is deprecated.
所以我替换为:
- (IBAction)activateSheet:(id)sender {
if (!_sheet)
NSLog(@"1");
[[NSBundle mainBundle] loadNibNamed:@"Sheet" owner:self topLevelObjects:nil];
[NSApp beginSheet:self.sheet
modalForWindow: [[NSApp delegate] window]
modalDelegate:self
didEndSelector:NULL
contextInfo:NULL];
}
工作表打开正常。但是如果我按保存或取消,我得到一个EXC_BAD_ACCESS异常:
The sheet opens fine. But if I press save or cancel, I get a EXC_BAD_ACCESS exception:
int main(int argc, const char * argv[])
{
return NSApplicationMain(argc, argv);
}
UPDATE - 这是一个微风与10.9:
UPDATE - This is a breeze with 10.9:
- (IBAction)activateSheet:(id)sender {
if (!_sheet)
[[NSBundle mainBundle] loadNibNamed:@"Sheet" owner:self topLevelObjects:nil];
[[[NSApp delegate] window] beginSheet:self.sheet completionHandler:nil];
}
- (void)endSheet:(NSWindow *)sheetWindow returnCode:(NSModalResponse)returnCode {
[sheetWindow orderOut:self];
}
- (IBAction)save:(id)sender {
[self doSave];
result = 1;
[self endSheet:self.sheet returnCode:result];
}
- (IBAction)cancel:(id)sender {
result = 0;
[self endSheet:self.sheet returnCode:result];
}
推荐答案
/ p>
implement like below:-
[NSApp beginSheet:self.sheet
modalForWindow: [[NSApp delegate] window]
modalDelegate:self
didEndSelector:@selector(didEndSheet:returnCode:contextInfo:)
contextInfo:nil];
- (void)didEndSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
{
if (returnCode == NSAlertDefaultReturn)
{
[sheet orderOut:self];
}
else if (returnCode == NSAlertAlternateReturn)
{
}
这篇关于OSX - Cocoa - 关闭工作表时出现异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文