大家好 我有一个NSTableView有三列。第一个是复选框,第三个是按钮。按钮“已启用”状态取决于是否选中了复选框。
我在awakeFromNib
方法中设置表格内容,我正在- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row
方法中实现复选框状态。我需要为setEnabled:
NSButton
的方法
由于
答案 0 :(得分:0)
在NSTableView中设置按钮状态的一个好方法是使用NSArrayController并将其绑定到NSTableView的列:
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的状态。
此代码未经测试,但应该对一般概念有所了解。