1

NSViewController をサブクラス化し、IBOutlets をセカンダリ nib の NSButton にフックしました。

NSViewController をインスタンス化し、ビューを NSMenu に適用することはできますが、うまく機能しますが、ボタンにアクセスしてタイトルを変更するにはどうすればよいでしょうか?

NSViewController には IBOutlets があるため、コントローラーを介してこれを行うと想定しました。

//this part works great
NSViewController *viewController = [[toDoViewController alloc] initWithNibName:@"toDoView" bundle:nil];
NSView *newView = [viewController view];
newMenuItem.view = newView;

//this part not so much
[viewController [toDoButton setTitle:someStringHere]];

ここからどこへ行くべきかについての指針はありますか?

編集して追加: toDoViewController クラス --

@interface toDoViewController : NSViewController {
    IBOutlet NSButton *checkBoxButton;
    IBOutlet NSButton *toDoButton;
}

@end
4

1 に答える 1

1
[viewController [toDoButton setTitle:someStringHere]];

インタラクティブ フィクションの通訳者が言うように、「それは動詞が欠けているようです」</p>

受信者 ( viewController)、完全なメッセージ式 ( [toDoButton setTitle:…])、およびブラケットがありますが、セレクターがありません。そのため、これは有効なメッセージ式ではありません。

次の 2 つの可能性があります。

  1. ビュー コントローラにメッセージを送信し、setTitle:その結果を引数として渡すつもりですが、セレクタを忘れました。NSButtonsetTitle:は何も返さないため、これはありそうもないと思います。
  2. ビューコントローラーからボタンを取得し、ボタンにsetTitle:メッセージを送信することを意味します。toDoButtonこのビュー コントローラーが、プロパティを追加した NSViewController のサブクラスのインスタンスであると仮定すると、または のいずれ[[viewController toDoButton] setTitle:someStringHere]かを使用します[viewController.toDoButton setTitle:someStringHere]
于 2009-11-27T17:15:55.053 に答える