我正在使用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/

10-10 20:45