0

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

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

谢谢

4

1 回答 1

0

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

  • 将包含按钮的列绑定到 NSArrayController(请参阅此示例
  • 启用下
    • 设置Controller Key排列对象
    • 将 设置Model Key Path为 NSArrayController 的按钮状态。例如,我们称它为enabled

现在,在您拥有 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 和 NSTableView 正确设置了绑定,则此函数应该更新按钮的当前状态以匹配 NSArrayController 的状态。

此代码未经测试,但应该对总体思路有所启发。

于 2011-10-28T16:32:15.713 回答