質問

こんにちは、3つの列があるnstableViewがあります。 1つ目はチェックボックスで、3つ目はボタンです。ボタン「有効」状態は、チェックボックスがチェックされているかどうかによって異なります。

テーブルコンテンツを設定しています awakeFromNib 方法と私はチェックボックス状態を実装しています - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row 方法。道を見つける必要があります setEnabled: のために NSButton

ありがとう

正しい解決策はありません

他のヒント

nStableViewでボタン状態を設定する良い方法は、nSarrayControllerを使用して、nStableViewの列にバインドすることです。

  • nsarraycontrollerにボタンを含む列をバインドします(参照 この例)
  • 有効になっています
    • をセットする Controller KeyArractedObjects
    • をセットする Model Key Path nsarraycontrollerのボタン状態に。たとえば、それを呼びましょう 有効になっています .

NSARRAYCONTROLLERとNSTABLEVIEW DELEGATEを持っているクラスでは、チェックボックスをクリックした後、このようなことをします。

- (void)updateArrayControllerWithButtonState: (BOOL)isEnabled
{
    // theTable is the NSTableView instance variable
    NSInteger row = [theTable clickedRow];

    // Get the array of values that populates the table
    NSMutableDictionary *arrayValues = [[theArrayController arrangedObjects] objectAtIndex:row];

    // Actually change the NSArrayController's value to match
    [arrayValues setObject:[NSNumber numberWithBool:[model isEnabled]] forKey:@"enabled"];

    [theTable reloadData];
}

NSARRAYCONTROLLER&NSTABLEVIEW用にバインディングを適切にセットアップすると、この関数はボタンの現在の状態を更新して、NSARRAYCONTROLLERのそれと一致する必要があります。

このコードはテストされていませんが、一般的なアイデアに光を当てる必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top