「セルにアクセス」しません。NSTableView
必要な場合にのみデータを要求します。データを入力したり、直接制御したりしません。
代わりに、NSTableViewDatasource
および オプションのNSTableViewDelegate
プロトコルを実装するコントローラー オブジェクトを作成します。その後、テーブル ビューはデータソース メッセージをコントローラーに送信し、コントローラーは適切なデータを提供します。
‑tableView:setObjectValue:forTableColumn:row:
datasource メソッドを実装することで、テーブル ビューに表示されるオブジェクトの編集を許可できます。このメソッドは、ユーザーがチェックボックスをクリックすると、コントローラー オブジェクトで呼び出されます。モデルを適切に更新するのはコントローラーの責任です。
モデルが更新されると、コントローラーはテーブル ビューにリロードするように指示する必要があります。‑tableView:objectValueForTableColumn:row:
テーブル ビューは、 datasource メソッドを使用して、表示が必要なセルの値をコントローラに要求します。これには、無効にする必要があるセルが含まれます。コントローラーは、セルに適切な値を提供する必要があります。
セルをさらに制御する必要がある場合は、
‑tableView:willDisplayCell:forTableColumn:row:
デリゲート メソッドを実装できます。これはセルが表示される直前に呼び出され、セルを適切に変更できます。
データ ソースの使用に関する詳細情報は、ドキュメントにあります。
もう 1 つのオプション (データソースを使用する代わりに) はNSArrayController
、モデル オブジェクトのコレクションにバインドする Cocoa バインディングと を使用することです。その場合、Enabled
テーブル列のバインドを、セルの有効状態を制御するモデル オブジェクトのプロパティにバインドできます。そのプロパティの状態が正しいことを確認するのはあなたの責任です。
プロパティを別のプロパティの値に依存させる必要がある場合は、Key-Value Observingドキュメントで概説されている依存キー メカニズムを使用できます。