我想将NSView的框架绑定到模型属性NSRect。我这样做了:
[textView.enclosingScrollView bind:@"frame" toObject:bindingsController withKeyPath:@"selection.textFrame" options:nil];
但我也想将frame.origin.x绑定到nstextField。怎么做,使用NSValueTransformer?
答案 0 :(得分:0)
您只能绑定到属性,这意味着您无法直接绑定到框架的某个部分。您可以通过绑定到框架并使用变换器来获取x坐标来间接地执行此操作,或者可以向视图添加属性以访问框架并返回x坐标。我会建议第二种方法,因为你可以使用类别而不是子类来实现它,并且允许设置值更容易。
@interface NSView (FrameXCoordinate)
@property (nonatomic) double frameXCoordinate;
@end
@implementation NSView (FrameXCoordinate)
- (double)frameXCoordinate {
return [self frame].origin.x;
}
- (void)setFrameXCoordinate:(double)x {
NSRect frame = [self frame];
frame.origin.x = x;
[self setFrame:frame];
}
@end
使用此功能,您只需绑定到frameXCoordinate
属性,并在文本字段中添加数字格式化程序。