0

単純な問題(私は願っています!)

テーブルに列を追加するvoidメソッドがあります。

そのメソッドをプログラムで呼び出すと(例:[self method])、テーブルが更新されず、代わりにIBAction(アプリからボタンを押す)を介して呼び出すと機能するのはなぜですか?実際、ログから、どちらの場合もメソッドが呼び出されていることがわかりますが、IBActionだけでデータを更新しています。

方法:

- (IBAction)void {
    NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:@"1"];
    [column setWidth:50];
    [tableData addTableColumn:column];
    [tableData reloadData];

    [[column headerCell] setStringValue:@"aColumn"];
    NSLog(@"Method called"); //The method is called in both cases
}

何が間違っているのかわかりません。

(ココアプログラミングの初心者)

どうもありがとう !

4

2 に答える 2

1

これをプログラムでどこと呼びましたか?awakeFromNibのようなものではなく、ビューがinitメソッドにロードされる前に呼び出した可能性があります。

于 2012-12-08T00:51:50.190 に答える
0

私はあなたのコードを試しましたが、異なる結果が得られました。コードからは正常に呼び出されました(そしてテーブルが更新されました)が、ボタンからは呼び出されませんでした(ボタンから呼び出そうとしたときにもログは実行されませんでした)。

問題はメソッド名です。メソッドにvoidという名前を付けないでください。コンソールに次のエラーメッセージが表示されませんか:「アクションvoidを接続できませんでした:クラスAppDelegateのターゲットに」コンパイラは、そのメソッドをボタンに接続することさえ許可しません(IBでできるように見えますが、そのエラーメッセージが表示され、メソッドを.hファイルに入れると、接続されているかどうかを示す円が横に表示されません)。

于 2012-12-08T02:46:38.370 に答える