【问题标题】:Cocoa: Do I need to initialize value transformers for use in IB?Cocoa:我需要初始化值转换器以在 IB 中使用吗?
【发布时间】:2012-03-21 11:15:59
【问题描述】:

我的“Other Sources”文件夹中包含两个自定义值转换器,绑定到 IB 中的表列,因此我对其进行了初始化:

@implementation MyDocument

- (id)init 
{
    self = [super init];
    if (self != nil) {
        // initialization code
        [self initialiseValueTransformers];
    }

return self;

}

- (void) initialiseValueTransformers {
    MyFirstTransformer *myFirstTransformer = [[[MyFirstTransformer alloc] init] autorelease];
    [NSValueTransformer setValueTransformer:myFirstTransformer forName:@"MyFirstTransformer"];

    MySecondTransformer *mySecondTransformer = [[[MySecondTransformer alloc] init] autorelease];
    [NSValueTransformer setValueTransformer:mySecondTransformer forName:@"MySecondTransformer"];
}

这些在 IB 中工作正常,列绑定到排列对象、模型键路径、值转换器。

我的问题是,我刚刚编写了第三个转换器,但没有以任何方式对其进行初始化,我只有一个文件 MyThirdTransformer.h / .m。它仍然适用于 IB..?

为什么会这样,我是否需要费心初始化前两个?

【问题讨论】:

    标签: objective-c cocoa interface-builder cocoa-bindings nsvaluetransformer


    【解决方案1】:

    当与您在 IB 中创建的 Cocoa 绑定一起使用时,您不需要创建自己的 NSValueTransformer 实例。

    【讨论】:

    • 谢谢。这就是我从我的问题中想到的。因此,为了澄清,对于与 IB 绑定一起使用,只需要描述转换器(即 .h 和 .m)。但是如果我想在代码中的某个地方使用它们,我(显然)需要创建它们的一个实例。对吗?
    • 你是对的。代码中的典型用途是绑定的编程创建。在这个用例中,您将注册您的NSValueTransformer 子类,因为NSValueTransformer 类维护了转换器名称和相应NSValueTransformer 对象的映射。请参阅文档中的 Value Transformer 编程指南。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多