gpt4 book ai didi

objective-c - NSTableView 内的 NSButtonCell 复选框始终获取 NSOffState。为什么?

转载 作者:行者123 更新时间:2023-12-03 17:52:51 29 4
gpt4 key购买 nike

大家好,我是 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 消息是:关闭状态。有人可以给我一些帮助吗?谢谢!!

最佳答案

如果您有一个 socket (“mySelection”)和多行,您认为 socket 连接到哪一行? (答案:都没有。您可能将其连接到原型(prototype)单元,而原型(prototype)单元永远不会直接显示或使用。)

但是没关系,在设置之前你不需要检查状态。假设您的其他代码是正确的,您应该能够执行以下操作:

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

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

关于objective-c - NSTableView 内的 NSButtonCell 复选框始终获取 NSOffState。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20893821/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com