如何在NSTableView中设置setEnabled:for NSButton

时间:2010-12-26 11:47:33

标签: nstableview nsbutton

大家好 我有一个NSTableView有三列。第一个是复选框,第三个是按钮。按钮“已启用”状态取决于是否选中了复选框。

我在awakeFromNib方法中设置表格内容,我正在- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row 方法中实现复选框状态。我需要为setEnabled:

找到NSButton的方法

由于

1 个答案:

答案 0 :(得分:0)

在NSTableView中设置按钮状态的一个好方法是使用NSArrayController并将其绑定到NSTableView的列:

  • 将包含按钮的列绑定到NSArrayController(请参阅this example
  • 已启用
    • Controller Key设置为 arrangeObjects
    • Model Key Path设置为NSArrayController的按钮状态。例如,我们称之为启用

现在,在您拥有NSArrayController和NSTableView委托的类中,单击复选框后执行以下操作:

- (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& amp;正确设置了绑定。 NSTableView,这个函数应该更新按钮的当前状态以匹配NSArrayController的状态。

此代码未经测试,但应该对一般概念有所了解。