setTag:
似乎没有NSTextView
。
因此,如果我有多个NSTextView
,如何在不为每个创建iVar的情况下访问它们?
我知道有可能通过代表......但我在那里遇到同样的问题:如何识别哪个NSTextView
是消息传递?
答案 0 :(得分:0)
您可以在类别中为NSTextView
添加自己的标记属性,并使其可以从Xcode Interface Builder中编辑
IB_DESIGNABLE
@interface NSTextView (Tag)
@property (strong, readwrite, nonatomic, nullable) IBInspectable NSString *myTag;
@end
const NSMutableDictionary* tagsMap;
@implementation NSTextView (Tag)
- (void) dealloc {
tagsMap[[NSValue valueWithNonretainedObject:self]] = nil;
}
- (void) setMyTag:(NSString *)myTag {
if (tagsMap == nil) {
tagsMap = [NSMutableDictionary new];
}
tagsMap[[NSValue valueWithNonretainedObject:self]] = myTag;
}
- (NSString*) myTag {
return tagsMap[[NSValue valueWithNonretainedObject:self]];
}
@end
答案 1 :(得分:0)
只是添加一种方法......简单......但很脏。
当我实例化说2个NSTextViews时...我用不同的fontSize设置每一个:(49和50),所以我可以用那样识别它们。
-(void)textDidChange:(NSNotification *)notification {
NSTextView* textView = (NSTextView *)[notification object];
if ([textView.font isEqualTo:[NSFont systemFontOfSize:49]]) {
NSLog(@"1");
} else if ([textView.font isEqualTo:[NSFont systemFontOfSize:50]])
{
NSLog(@"2");
}
}