У меня есть метка (NSTextField) в IB, которая связана с контроллером.
Контроллер на awakeFromNIB устанавливает значение атрибута attributedStringValue для содержания некоторого цветного текста и одной или двух ссылок.
Когда вы видите метку, она содержит правильное строковое значение, но часть форматирования теряется - пока вы не нажмете на метку, и она не обновится, чтобы содержать правильное форматирование.
Я использую этот код для установки значения:
[self.testTextField setAllowsEditingTextAttributes:YES];
[self.testTextField setSelectable:YES];
NSMutableAttributedString *linkString = [[NSMutableAttributedString alloc] initWithString:@"hit this "];
[linkString beginEditing];
NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString:@"link"];
NSRange range = NSMakeRange(0, [attrString length]);
[attrString addAttribute:NSLinkAttributeName value:[[NSURL URLWithString:@"http://google.com"] absoluteString] range:range];
[attrString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:NSUnderlinePatternDot] range:range];
[attrString addAttribute:NSForegroundColorAttributeName value:[NSColor blackColor] range:range];
[linkString appendAttributedString:attrString];
[linkString appendAttributedString:[[NSAttributedString alloc] initWithString:@" to search"]];
[linkString addAttribute:NSForegroundColorAttributeName value:[NSColor redColor] range:NSMakeRange(0, [linkString length])];
[linkString endEditing];
[self.testTextField setAttributedStringValue:linkString];
На основе этого примера вы увидите строку, окрашенную в красный цвет, и шрифтом Label по умолчанию.
Затем, когда вы нажимаете на ярлык, шрифт меняет размер и лицо, и ссылка волшебным образом отображается.
Есть какие-нибудь идеи о том, как правильно отобразить строку в первый раз?