Cocoa:我需要初始化值转换器以在 IB 中使用吗?
Posted
技术标签:
【中文标题】Cocoa:我需要初始化值转换器以在 IB 中使用吗?【英文标题】:Cocoa: Do I need to initialize value transformers for use in 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..?
为什么会这样,我是否需要费心初始化前两个?
【问题讨论】:
【参考方案1】:当与您在 IB 中创建的 Cocoa 绑定一起使用时,您不需要创建自己的 NSValueTransformer
实例。
【讨论】:
谢谢。这就是我从我的问题中想到的。因此,为了澄清,对于与 IB 绑定一起使用,只需要描述转换器(即 .h 和 .m)。但是如果我想在代码中的某个地方使用它们,我(显然)需要创建它们的一个实例。对吗? 你是对的。代码中的典型用途是绑定的编程创建。在这个用例中,您将注册您的NSValueTransformer
子类,因为NSValueTransformer
类维护了转换器名称和相应NSValueTransformer
对象的映射。请参阅文档中的 Value Transformer 编程指南。以上是关于Cocoa:我需要初始化值转换器以在 IB 中使用吗?的主要内容,如果未能解决你的问题,请参考以下文章
访问 Cocoa 和/或 Carbon 以在 OS X 上自动启动(在 C++ 上也使用 QT)
Objective C - 创建文本文件以在 Cocoa 中逐行读取和写入
@IBDesignable 错误:IB Designables:无法更新自动布局状态:Interface Builder Cocoa Touch Tool 崩溃