0

大家好,我是 Cocoa 编程的新手,无论是选中还是取消选中 NSButtonCell(UI 中的复选框单元格拖到 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 消息是:关闭状态。谁能给我一些帮助?谢谢!!

4

1 回答 1

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;
}

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

于 2014-01-07T13:17:14.953 回答