0

しばらくiOSで遊んだ後、最初のネイティブMacアプリに取り組んでいます。

メニュー項目からウィンドウを起動しようとしていますが、やり方が間違っているのではないかと思います。IBActionこの新しいウィンドウのボタンに接続すると、エラーが返されます。

これが私がやっていることです。メニュー項目から、これを起動します:

-(IBAction)displaySAInput:(id)sender{

NSLog(@"Input selected.");
inputSAViewController = [[NSWindowController alloc] initWithWindowNibName:@"InputViewController"];
[inputSAViewController showWindow:self];

これにより、クラスInputViewControllerが所有する nib が起動します。から継承するクラスInputViewControllerを設定しました。InputViewControllerNSWindowController

InputViewController.mは次のようなものをテストIBActionしました:

-(IBAction)testButton:(id)sender{

NSLog(@"Data recalled?");

}

IBActionこれを Interface Builder を介してボタンに接続します。すべて問題ないようです。

ウィンドウをビルドして開くと、InputViewController何かをクリックする前にコンソールに次のエラーが表示されます。

Could not connect the action testButton: to target of class NSWindowController

私は広範囲に検索しましたが、私の無知のために点をつなぐことができません。NSApplication の同様のエラーに基づくこのスレッドは有望に見えますが、エラーに関連して接続を行うために必要なものがよくわかりませんNSWindowController

これは単純なはずです。私は何が欠けていますか?

4

2 に答える 2

1

あなたのコード:

-(IBAction)displaySAInput:(id)sender{
    NSLog(@"Input selected.");
    inputSAViewController = [[NSWindowController alloc]
                  initWithWindowNibName:@"InputViewController"];
    [inputSAViewController showWindow:self];
}

NSWindowControllerメソッドを実装したカスタム サブクラスではなく、のジェネリック インスタンスを割り当て/初期化していることに注意してくださいtestButton:。おそらく次のように変更したいと思うでしょう:

-(IBAction)displaySAInput:(id)sender{
    NSLog(@"Input selected.");
    inputSAViewController = [[InputViewController alloc]
                  initWithWindowNibName:@"InputViewController"];
    [inputSAViewController showWindow:self];
}
于 2012-09-07T15:01:13.073 に答える
0

事前に NSWindow をロードして非表示にし、IBAction が呼び出されたら、次のようにします。

[myWindow setIsVisible:YES];
[myWindow setLevel:NSFloatingWindowLevel];

わーい!

于 2012-09-07T14:49:58.287 に答える