大家好,我有一个 NSTableView,它有三列。第一个是复选框,第三个是按钮。按钮“启用”状态取决于复选框是否被选中。
我在awakeFromNib
方法中设置表格内容,并在方法中实现复选框状态- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row
。我需要找到一种setEnabled:
方法NSButton
谢谢
大家好,我有一个 NSTableView,它有三列。第一个是复选框,第三个是按钮。按钮“启用”状态取决于复选框是否被选中。
我在awakeFromNib
方法中设置表格内容,并在方法中实现复选框状态- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row
。我需要找到一种setEnabled:
方法NSButton
谢谢
在 NSTableView 中设置按钮状态的一个好方法是使用 NSArrayController 并将其绑定到 NSTableView 的列:
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 的状态。
此代码未经测试,但应该对总体思路有所启发。