gpt4 book ai didi

objective-c - 根据 NSTableview 中的值启用按钮

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

我有一个 NSTableview。我需要根据 TableView 中列的值启用该按钮。例如,在 TableView 中我有一列“状态”。我有两种状态,已撤回和已预订。如果我单击状态为“已撤回”的行,我需要禁用“撤回”按钮。我可以通过绑定(bind)来做到这一点吗?我怎样才能做到呢?请帮助我。谢谢。

最佳答案

如果您创建了自定义NSValueTransformer,则可以使用绑定(bind)启用或禁用该按钮。

您可以按如下方式绑定(bind)按钮的Enabled属性:

绑定(bind)到:arrayController

Controller 键:选择

模型 key 路径:状态

值转换器:MDStatusValueTransformer

注意:您应该选择 nib 文件中阵列 Controller 的名称来代替 arrayController。您应该指定最终命名我在下面提供的类的任何类名,以代替 MDStatusValueTransformer

正如我提到的,您需要创建一个自定义 NSValueTransformer。 enabled 属性需要一个包含在 NSNumber 中的 BOOL,但您的 status 属性是一个 NSString。因此,您将创建一个自定义 NSValueTransformer 来检查传入的 status NSString,并返回 NO if status 等于 @"Withdrawn"

自定义的NSValueTransformer应该看起来像这样:

MDStatusValueTransformer.h:

@interface MDStatusValueTransformer : NSValueTransformer

@end

MDStatusValueTransformer.m:

@implementation MDStatusValueTransformer

+ (Class)transformedValueClass {
return [NSNumber class];
}

+ (BOOL)allowsReverseTransformation {
return NO;
}

- (id)transformedValue:(id)value {
if (value == nil) return nil;
if (![value isKindOfClass:[NSString class]]) return nil;

if ([value isEqualToString:@"Withdrawn"]) {
return [NSNumber numberWithBool:NO];
}
return [NSNumber numberWithBool:YES];
}

@end

关于objective-c - 根据 NSTableview 中的值启用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14995257/

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