0

このcocoa でのシート プログラミングのチュートリアルでは次のメソッドを呼び出すように指示されています。

[[alert beginSheetModalForWindow:[searchField window] 
    modalDelegate:self 
    didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) 
    contextInfo:nil];

これをルビで次のように書いたところ、

alert.beginSheetModalForWindow(self.window, 
    modalDelegate:self,
    didEndSelector: :alertDidEnd,
    contextInfo:nil)

もちろん、そのdidEndSelector部分は間違っています。コードの後半には、returnCode と contextInfo を引数として受け取るメソッド alertDidEnd があります。見てみるself.methodsと、メソッドが としてリストされていることに気付きましたalertDidEnd:returnCode:contextInfo:。上記のサンプル コードでは、'@' を使用してセレクターをマークしています。これは、シンボルを使用して Macruby で実現されますが、この場合、シンボルには許可されていないコロンが含まれます。このメソッド名をシンボルとして表現するにはどうすればよいですか? この情報を自分で見つけることができませんでした。どこを見ればよかったのでしょうか?

ありがとう!

4

2 に答える 2

2

MacRuby docsに記載されているように、シンボルはセレクターでブリッジされます。したがって、次のようにします。

alert.beginSheetModalForWindow(self.window, 
    modalDelegate:self,
    didEndSelector: :'alertDidEnd:returnCode:contextInfo:',
    contextInfo:nil)
于 2011-07-18T23:16:21.720 に答える
1

シンボルを使ってみましたか? RubyCocoa で動作するようです。

于 2011-07-18T23:10:27.123 に答える