将标签绑定到类的属性
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
并引用子类单元格内的标签。如果您不知道如何执行此操作,我可以发布一些代码。
【讨论】:
以上是关于将标签绑定到类的属性的主要内容,如果未能解决你的问题,请参考以下文章
使用 RxSwift 将多个 UITextField 绑定到类道具