2

下の図に示すように、プロジェクトのウィンドウ内に NSView があります。

この「カスタム ビュー」のサブビューに NSImageViews を追加して、アプリケーションのメイン ウィンドウに直接ではなく、そこに表示されるようにするにはどうすればよいですか?

4

2 に答える 2

1

サブビューを追加するビューにプログラムでアクセスし、そのビューで -addSubView: メソッドを呼び出します。インターフェイス ビルダーにフックされた IBOutlet としてアクセスするか、識別子 (インターフェイス ビルダー インスペクタの "identity" セクションに識別子文字列を設定) によってアクセスできます。windowcontroller のビュー (カスタム ビューは 1 つ) のサブビューを反復処理し、"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];
于 2012-09-04T15:38:50.720 に答える
0

NSImageViews を NSView にドラッグ アンド ドロップして、NSImageViews を Interface builder のサブビューとして NSView に追加します。

于 2012-09-04T14:14:50.243 に答える