大家好我是Cocoa编程的新手,无论是检查还是取消选中NSButtonCell(UI中的Check Box Cell拖动到NSTableView中的单元格),我总是得到NSOffState。 我有一个@property IBOutlet NSButtonCell * mySelection,连接到相应的UI和以下代码。
- (void) tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
MediaAComparar *media = [mediasRecesEnStock objectAtIndex:row];
NSString *identifier = [tableColumn identifier];
if ([identifier isEqualToString:@"seleccion"])
{
if ([mySelection state] == NSOnState)
{
[media setValue:object forKey:@"seleccion"];
NSLog(@"on state");
}
if ([mySelection state] == NSOffState)
{
[media setValue:object forKey:@"seleccion"];
NSLog(@"off state");
}
}
}
我永远不会执行NSOnState,我得到的唯一NSLog消息是:off state。 谁能给我一些帮助? 谢谢!
答案 0 :(得分:1)
如果您有一个插座(“mySelection”)和多行,您认为插座连接到哪一行? (答案:没有。你可能把它连接到原型单元格,它从未显示或直接使用。)
但无论如何,在设置状态之前不需要检查状态。假设您的其他代码是正确的,您应该可以执行以下操作:
- (void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
MediaAComparar *medium = [mediasRecesEnStock objectAtIndex:row];
if ([tableColumn.identifier isEqualToString:@"seleccion"])
medium.seleccion = object.booleanValue;
}
更少的代码是更好的代码。