将标签绑定到类的属性

Posted

技术标签:

【中文标题】将标签绑定到类的属性【英文标题】:Bind Label to class' property 【发布时间】:2012-06-25 13:54:17 【问题描述】:

我正在尝试将标签 (NSTextField) 绑定到类的属性。在 Interface Builder 中,我使用 Model Key Path = self.aString 将标签的 Value 绑定到 File's Owner .

File's Owner 是 NSViewController 的子类,aString 定义为:@property (nonatomic, strong) NSString *aString;

标签放置在 View Based NSTableView 中,在运行时通过与托管对象上下文的绑定填充。

当我在类的实现中调用[self setAString:@"..."][self setValue:@"..." forKey:@"aString"] 时,表格视图中没有任何变化。但是,如果标签放置在视图内,它就可以工作。为什么?

【问题讨论】:

【参考方案1】:

这是基于视图的表格视图的一个限制,据我所知,解决它的唯一方法是将TableView.delegate 设置为您的File's Owner(或其他对象,如果您尝试绑定到该对象)而是)。

(我希望有更好的答案来解释原因,因为我不知道为什么会这样)

Cake 的回答是一个很好的解决方法。

【讨论】:

将委托设置为文件所有者会导致错误:*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array 我决定支持你的回答,因为看起来这个人不会回来了。 @user1471997 我正在查看我的一些旧答案,并再次发现了这个问题。你解决了这个问题吗? (我可能来不及问,但错误出现在哪里?你能用整个堆栈更新你的问题吗?)【参考方案2】:

我通过继承 NSTableCellView向其添加 NSString 属性解决了问题。然后我将标签的值绑定到表格单元格视图,属性名称为键。

【讨论】:

【参考方案3】:

当它在 tableview 中时,您可能无法直接访问它。尝试存储对 tableview 的引用,然后调用标签。因此,如果您的表有一个名为 t 的引用,请将标签连接到表,然后: t.labelName.text = @"string" 虽然,如果它在表格中的单元格内,您可能需要使用 cellForRowAtIndexPath 并引用子类单元格内的标签。如果您不知道如何执行此操作,我可以发布一些代码。

【讨论】:

以上是关于将标签绑定到类的属性的主要内容,如果未能解决你的问题,请参考以下文章

如何将值绑定到类属性?

XAML:将文本框最大长度绑定到类常量

使用 RxSwift 将多个 UITextField 绑定到类道具

Flex 警告:无法绑定到类“Object”上的属性“foo”(类不是 IEventDispatcher)

thinkPHP17---操作绑定到类

类的绑定方法