2009-10-10 8 views
1

Je cours avec MacRuby 0,5 et I ont une méthode:MacRuby, erreur de feuille

attr_accessor :bookmarkSheet, :mainWindow 

def createBookmark(sender) 
    NSApp.beginSheet(bookmarkSheet, 
    modalForWindow:mainWindow, 
    modalDelegate:self, 
    didEndSelector:nil, 
    contextInfo:nil) 
end 

qui est censé pour ouvrir un panneau de feuille sur la fenêtre principale. Cependant, chaque fois que j'exécute cette méthode, j'obtiens

2009-10-10 12:27:45.270 Application[45467:a0f] nil is not a symbol 

Vous ne savez pas pourquoi j'obtiens cette erreur? Je ne peux pas trouver n'importe où qui énumère la raison pour laquelle je reçois cette erreur. Merci

Répondre

1

Peter a raison, didEndSelector: attend un sélecteur, vous devriez essayer quelque chose comme:

def bookmark_created 
puts "Bookmark created" 
end 

def createBookmark(sender) 
    NSApp.beginSheet(bookmarkSheet, 
    modalForWindow:mainWindow, 
    modalDelegate:self, 
    didEndSelector:"bookmark_created:", 
    contextInfo:nil) 
end 

Remarquez comment j'ai ajouté deux points après le nom de la méthode à appeler. En outre, il ressemble à un bug avec la version bêta MacRuby, je vous encourage à signaler le bug sur le tracker MacRuby: http://www.macruby.org/trac/newticket

Voici l'exemple donné par la documentation d'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]; 
} 

Comme vous pouvez voyez, vous devriez pouvoir régler le sélecteur de fin comme nul. En attendant, ma solution de contournement fonctionnera très bien.

Bonne chance,

  • Matt
+0

parfait. Notez cependant, le mien n'a pas besoin de ce deux-points supplémentaire après le nom de la méthode. cela a fonctionné de cette façon, mais a jeté une exception. Merci pour l'aide les gars. aucune indication quant à la raison de cette erreur? – Lukas

0

Parce que vous passez nil comme didEndSelector:. Vous devez passer un sélecteur là-bas.

0

Juste un petit mot pour tout le monde à lire ce fil. Lors de la recherche des bugs dans MacRuby, même si vous n'êtes pas sûr, s'il vous plaît envoyer un courriel la liste de diffusion http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel et déposer un rapport de bogue: https://www.macruby.org/trac/newticket

Vous pouvez certainement aussi poster ici et demander sur Twitter, mais si vous trouvez quelque chose de mal avec MacRuby et vous Je veux le réparer, vous devez vraiment déposer un rapport de bogue.

Mise à jour: ticket enregistré here. (vérifier sur le billet pour la mise à jour de statut)

Merci,

+1

Vous êtes rapide. Le bug est corrigé! – Lukas