我有具有以下结构的阵列:
(
[0] = (
[0] = @"Title string"
[1] = @"Some content string"
)
[1] = (
[0] = @"Title string"
[1] = @"Some content string"
)
[2] = (
[0] = @"Title string"
[1] = @"Some content string"
)
...
)
等,因此第四到复发的variating量。
我的目标是尝试,这一切融合成一个单一的字符串中的NSTextField显示,并且使每一个标题字符串大胆。 所以上面的代码会是这个样子,如果它被输出。
标题字符串 有些内容字符串
标题字符串
有些内容字符串
标题字符串
有些内容字符串
我的第一个问题是,怎么能让一个字符串,其中某些粗体文字; 我的第二个问题是我怎么能采取的字符串,并将其发送到的NSTextField?
到目前为止,这是我做了什么。
我已经尝试使用NSMutableAttributedString
使字符串,如下所示:
NSMutableAttributedString *contentString = [NSMutableAttributedString alloc];
for (int i=0; i<[result count]; i++) {
[contentString addAttribute:NSFontAttributeName
value:[NSFont fontWithName:@"HelveticaNeue-Bold" size:16.0]
range:NSRangeFromString(result[i][0])];
}
但我无法弄清楚如何添加其他任何字符串,或尝试和打印只是单单是因为我想下面当的NSTextField以显示它得到这个错误。
[self->contentView setString:contentString];
所以,我想这不是,却得到了不同的错误
[self->contentView attributedString:contentString];
对于“NSTextView”不可见@interface声明选择“attributedString”
设法找到一种方法,使工作
NSMutableAttributedString *contentString = [NSMutableAttributedString alloc];
for (int i=0; i<[result count]; i++) {
NSMutableAttributedString *resultString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n%@\n\n", result[i][0], result[i][1]]];
NSDictionary *attributes = @{
NSFontAttributeName : [NSFont fontWithName:@"HelveticaNeue-Bold" size:12.0]
};
NSString *subtitle = [NSString stringWithFormat:@"%@", result[i][0]];
[resultString setAttributes:attributes range:NSMakeRange(0, [subtitle length])];
[contentString appendAttributedString:resultString];
}
[self->content setString:@""];
[[self->content textStorage] appendAttributedString:contentString];
解决之道在于代码的最后一行中。 所有这一切需要做的是,而不是将数据传递给setString
,使用textStorage
来代替,而传递一个对象给它。 (我觉得我得到了正确的术语)
武卫耶希望这有助于人的未来!
这个怎么样...
NSMutableAttributedString *contentString = [[NSMutableAttributedString alloc] init];
for (int i = 0; i < [result count]; i++) {
NSMutableAttributedString *resultString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n%@\n\n", result[i][0], result[i][1]]];
[resultString addAttribute:NSFontAttributeName
value:[NSFont fontWithName:@"HelveticaNeue-Bold" size:16.0]
range:NSRangeFromString(result[i][0])];
[contentString appendAttributedString:resultString];
}
关于你的其他代码的一些注意事项。 确保你的对手[NSMutableAttributedString alloc]
与像一个init [[NSMutableAttributedString alloc] init]
你应该认识到NSMutableAttributedString
不是一个子类NSString
,但不是NSObject
,所以setString:
不提供给您的方法。
NSTextView
使用insertText:
来设置它的值。