我有一个 NSTableview。我需要根据表格视图中列的值启用按钮。例如,在表格视图中,我有一列,状态。我有两种状态,撤回和预订。如果我单击状态为已撤回的行,我需要禁用撤回按钮。我可以通过绑定来做到这一点吗?我该怎么做?请帮帮我。谢谢。
问问题
428 次
1 回答
1
如果您创建了一个 custom NSValueTransformer
,您可以使用绑定启用或禁用该按钮。
Enabled
您可以按如下方式绑定按钮的属性:
绑定到:arrayController
控制器键:selection
模型密钥路径:status
价值转换器:MDStatusValueTransformer
注意:代替arrayController
,您应该选择 nib 文件中阵列控制器的名称。代替MDStatusValueTransformer
,您应该指定最终命名我在下面提供的类的任何类名。
正如我所提到的,您需要创建一个自定义NSValueTransformer
. enabled 属性需要一个BOOL
包裹在一个 中NSNumber
,但您的status
属性是一个NSString
. 因此,您将创建一个自定义NSValueTransformer
来检查传入的status
NSString
,NO
如果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 回答