Cocoa NSTextField - 绑定和设置属性

时间:2015-01-25 20:47:12

标签: macos cocoa nsattributedstring nstextfield nsfont

  • 我有一个带有Label(TheLabel)的xib ...这是一个NSTextField。它的文本不可由用户编辑。
  • 我将它的值绑定到我的控制器类中的NSString *。
  • 我的控制器类中的字体已绑定到NSFont *。

我可以在控制器类中更改NSString,我看到它反映在标签中。

我可以在我的控制器类中更改NSFont,我看到标签中反映了这一点。

但是...

我不能为我的生活弄清楚如何打开和关闭下划线。

如果我叫这个功能......

-(void)setUnderlineType:(NSNumber*)underline
{
   NSMutableAttributedString* content = [[TheLabel attributedStringValue] mutableCopy];
   [content addAttribute:NSUnderlineStyleAttributeName value:underline range:NSMakeRange(0, content.length)];
   [TheLabel setAttributedStringValue:content];
}

...我得到一个下划线,但是然后忽略了绑定的字体,我得到了一些标准字体。从那时起,在我的控制器中更改NSFont对NSTextField没有明显影响。

我尝试在添加下划线之前从'内容'中删除属性...删除字体属性...但这也不起作用。

每次调用此函数时,绑定到NSTextField的字体都会被“忽略”,我看到标准字体是标准字体。

非常感谢任何指导。

1 个答案:

答案 0 :(得分:0)

您需要设置NSFontAttributeName以更新NSAttributedString

字体
NSFont *font = ...;
NSMutableAttributedString* content = [[theLabel attributedStringValue] mutableCopy];
[content addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, content.length)];
[theLabel setAttributedStringValue:content];