0

我有一个 NSTableview。我需要根据表格视图中列的值启用按钮。例如,在表格视图中,我有一列,状态。我有两种状态,撤回和预订。如果我单击状态为已撤回的行,我需要禁用撤回按钮。我可以通过绑定来做到这一点吗?我该怎么做?请帮帮我。谢谢。

4

1 回答 1

1

如果您创建了一个 custom NSValueTransformer,您可以使用绑定启用或禁用该按钮。

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

绑定到:arrayController

控制器键:selection

模型密钥路径:status

价值转换器:MDStatusValueTransformer

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

正如我所提到的,您需要创建一个自定义NSValueTransformer. enabled 属性需要一个BOOL包裹在一个 中NSNumber,但您的status属性是一个NSString. 因此,您将创建一个自定义NSValueTransformer来检查传入的status NSStringNO如果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
于 2013-02-21T07:04:04.040 回答