绑定nsrect和nstextfield

时间:2011-10-09 17:26:15

标签: macos cocoa operating-system

我想将NSView的框架绑定到模型属性NSRect。我这样做了:

[textView.enclosingScrollView bind:@"frame" toObject:bindingsController withKeyPath:@"selection.textFrame" options:nil];

但我也想将frame.origin.x绑定到nstextField。怎么做,使用NSValueTransformer?

1 个答案:

答案 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属性,并在文本字段中添加数字格式化程序。