繁体   English   中英

NSTableView中的NSButtonCell复选框始终获取NSOffState。 为什么?

[英]NSButtonCell checkbox inside NSTableView is always getting NSOffState. Why?

嗨,大家好,我是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。 谁能给我些帮助吗? 谢谢!!

如果您有一个插座(“ 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;
}

更少的代码就是更好的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM