繁体   English   中英

将对象添加到NSView

[英]Adding objects to an NSView

我在项目窗口中有一个NSView,如下图所示:

如何将NSImageViews添加到此“自定义视图”的子视图中,以便在其中显示而不是直接在应用程序的主窗口中显示?

通过编程,您可以访问要向其中添加子视图的视图,然后在其上调用-addSubView:方法。 您可以作为连接到接口构建器的IBOutlet来访问它,也可以通过标识符来访问它(在接口构建器检查器的“标识”部分中设置标识符字符串)。 遍历windowcontroller视图的子视图(您的自定义视图将是一个),并测试“ identifier”的字符串值

这是最近项目的简化代码段,用于以编程方式将额外的“属性”框添加到已在xib中定义了框的视图中。 我将一个新的框视图( propertiesBoxView )添加到现有的NSView (由IBOutlet-ed _detailsView ),并将其相对于另一个同级框(其标识符设置为“ UI_DETAILSBOX”)定位。 NSImageView的行为应与方框视图相同:

_propsViewController = [[MySpecialViewController alloc] initWithThings:...];
/* snip */

NSView *propertiesBoxView = [_propsViewController view];
NSView *detailsBox = nil;
// find the details box
for (NSView *sibling in [_detailsView subviews]) {
  if ([[sibling identifier] isEqualToString:@"UI_DETAILSBOX"]) {
    detailsBox = sibling;
    break;
  }
}
if (detailsBox == nil) {
  return;
}

[_detailsView addSubview:propertiesBoxView];
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(propertiesBoxView, detailsBox);
NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[detailsBox]-9-[propertiesBoxView]-(>=9)-|"
                                                             options:0
                                                             metrics:nil
                                                               views:viewsDictionary];
NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-9-[propertiesBoxView]-(>=9)-|"
                                                             options:0
                                                             metrics:nil
                                                               views:viewsDictionary];
[_detailsView addConstraints:verticalConstraints];
[_detailsView addConstraints:horizontalConstraints];

将NSImageViews拖放到NSView上,会将NSImageViews作为子视图添加到Interface builder中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM