SetEnabledを設定する方法:nstableviewのnsbutton用
-
13-10-2019 - |
質問
こんにちは、3つの列があるnstableViewがあります。 1つ目はチェックボックスで、3つ目はボタンです。ボタン「有効」状態は、チェックボックスがチェックされているかどうかによって異なります。
テーブルコンテンツを設定しています awakeFromNib
方法と私はチェックボックス状態を実装しています - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row
方法。道を見つける必要があります setEnabled:
のために NSButton
ありがとう
正しい解決策はありません
他のヒント
nStableViewでボタン状態を設定する良い方法は、nSarrayControllerを使用して、nStableViewの列にバインドすることです。
- nsarraycontrollerにボタンを含む列をバインドします(参照 この例)
- 下 有効になっています
- をセットする
Controller Key
に ArractedObjects - をセットする
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のそれと一致する必要があります。
このコードはテストされていませんが、一般的なアイデアに光を当てる必要があります。
所属していません StackOverflow