1

「スーパービュー」として NSSplitView があります。この SplitView には、NSTableView を含むカスタム ビューがあります。Controller クラスからカスタム ビューを読み込んでから、カスタム ビューとテーブルのサイズを調整しようとしています。ただし、テーブルやカスタム ビューのサイズは変更されません。私が間違っているのは何ですか?

カスタム ビューのサイズを読み込んで設定するコントローラー クラス メソッドを次に示し
ます。@property (強い) AppsNavigationViewController *navigationViewController;

// Implementation
- (void) initNavigationView :(id)viewControllerClass :(NSString*) viewNibName {

  _navigationViewController = [[viewControllerClass alloc] 
                               initWithNibName:viewNibName bundle:nil]; 

 // add the current custom view to the parent view
 [_navigationView addSubview:[_navigationViewController view]];

 [[_navigationViewController view] setAutoresizingMask:
                                    NSViewHeightSizable|NSViewWidthSizable];

 // set the bounds of the custom view to the size of the parent view
 [[_navigationViewController view] setBounds:[_navigationView bounds]]; 

 [_navigationViewController setDelegate:self]; // not relevant

 [_splitView adjustSubviews]; // checked. contains the _navigationView

}

そして、これがどのように見えるかです:

カスタム ビューと nstable を使用した nssplitview

編集 いくつかのビューをサブクラス化し、さまざまな背景を描画します。そして、サイズを取得しないのは間違いなくカスタムビューです!

ここに画像の説明を入力

4

1 に答える 1

1

テーブルのフレームがスーパー ビューの原点にない可能性があります。まず、境界の代わりにフレームを設定してみてください。その後、これを呼び出すことができます。

[[_navigationViewController view] setFrameOrigin:NSMakePoint(0,0)];

スーパービューの境界がそのスーパービューの {0,0} にない可能性があるため、通常はこのようにフレーム/境界を設定します...

NSRect newFrame;
newFrame.origin.x = 0;
newFrame.origin.y = 0;
newFrame.size.width = [[someView superview] frame].size.width;
newFrame.size.height = [[someView superview] frame].size.height;
[someView setFrame:newFrame]; 
于 2013-01-18T00:11:43.073 に答える