1

我有一个 NSSplitView 作为我的“Superview”。在这个 SplitView 中是一个带有 NSTableView 的自定义视图。我正在尝试从 Controller 类加载我的自定义视图,然后调整自定义视图和表格的大小。但是表格和/或自定义视图不会调整大小。我做错了什么?

这是我的控制器类方法,我在其中加载并设置自定义视图的大小:
// Header File @property (weak) IBOutlet NSView *navigationView; @property (strong) 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 回答