1

バックグラウンド:

名前のリストを含むテーブルビューがあります。リスト内の名前をクリックすると、ウィンドウの別のセクションに追加の詳細情報が表示されます。すべてが接続され、正しく機能しています。

でも...

このテーブルで Type Select を使用したいのですが、次の障害が発生しました。

名前の入力を開始すると (テーブルが選択されているときに)、テーブル内の適切な名前が正しく強調表示されますが、テーブルの右側の詳細情報は変更されません。

その理由は、詳細情報を変更するためのコードが IBAction メソッド内にあり、リスト内の名前をクリックして選択したときにのみ呼び出され、[sender clickedRow] 呼び出しを使用して選択した名前のインデックスを取得していることです。

[tableView selectedRow] を使用する必要があるのではないかと思いますが (選択されているが、クリックしていないため)、このチェックをどこでどのように実行するかはよくわかりません。

また、「type select」はアクションメッセージを送信していないため、[sender selectedRow] を使用できず、代わりに [tableView selectedRow] を使用することも考えています...

質問:

テーブルビューで選択された行が type select によっていつ変更されたかを知るにはどうすればよいですか?

ありがとう!

4

1 に答える 1

0

コントローラーにデリゲート メソッドを実装しtableViewSelectionDidChange:、コントローラーがNSTableViewのデリゲートであることを確認します。

次のようなものでビューを更新できます。

- (void)tableViewSelectionDidChange:(NSNotification *)aNotification {
    [relatedView updateInformationFromRow:[[aNotification object] selectedRow]];
}

ドキュメントから:

tableViewSelectionDidChange:テーブル ビューの選択が変更されたことをデリゲートに通知します。

その中で、関連するビューを更新します。aNotificationのオブジェクトを使用できます。これはNSTableViewSelectionDidChangeNotification、再びドキュメントから、次のようになります。

NSTableView オブジェクトの選択が変更された後に投稿されます。通知オブジェクトは、選択が変更されたテーブル ビューです。この通知には userInfo ディクショナリが含まれていません。

于 2012-05-22T20:00:03.307 に答える