我正在使用MacRuby 0.5运行,并且有一种方法:
attr_accessor :bookmarkSheet, :mainWindow
def createBookmark(sender)
NSApp.beginSheet(bookmarkSheet,
modalForWindow:mainWindow,
modalDelegate:self,
didEndSelector:nil,
contextInfo:nil)
end
应该在主窗口上打开一个面板。但是,每当我运行此方法时,
2009-10-10 12:27:45.270 Application[45467:a0f] nil is not a symbol
关于我为什么会收到此错误的任何想法?我似乎找不到任何地方列出出现此错误的原因。谢谢
最佳答案
彼得说的没错,didEndSelector:期待选择器,您应该尝试类似的方法:
def bookmark_created
puts "Bookmark created"
end
def createBookmark(sender)
NSApp.beginSheet(bookmarkSheet,
modalForWindow:mainWindow,
modalDelegate:self,
didEndSelector:"bookmark_created:",
contextInfo:nil)
end
请注意,我是在要调用的方法名称后添加冒号的。
另外,它看起来像是MacRuby beta版本中的错误,我鼓励您在MacRuby跟踪器上报告该错误:http://www.macruby.org/trac/newticket
这是Apple文档提供的示例:
- (void)showCustomDialog: (NSWindow *)window
// User has asked to see the dialog. Display it.
{
if (!myCustomDialog)
[NSBundle loadNibNamed: @"MyCustomDialog" owner: self];
[NSApp beginSheet: myCustomDialog
modalForWindow: window
modalDelegate: nil
didEndSelector: nil
contextInfo: nil];
[NSApp runModalForWindow: myCustomDialog];
// Dialog is up here.
[NSApp endSheet: myCustomDialog];
[myCustomDialog orderOut: self];
}
如您所见,您应该能够将结束选择器设置为nil。在此期间,我的解决方法将正常工作。
祝好运,
马特
关于ruby - MacRuby,工作表错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1548391/