我有一个Window区域(在我的MainMenu.xib中),我希望在不同的时间点根据一些用户选择的标准动态填充不相关的“视图”,例如NSTable,IKImageBrowserView等。
(在那里放置一个通用的NSView并且每次都添加一个子视图就足够了吗?我对Cocoa很新,所以欢迎任何指针)
答案 0 :(得分:6)
在现代Cocoa中,这是视图控制器的工作。 Cathy Shive有一些关于它们的好博文(1,2,3),以及与基本NSViewController共同创作的a more useful view controller class。
答案 1 :(得分:1)
有几种方法可以做到这一点。我发现很容易放入“自定义nsview”,并将其替换为windowDidLoad中的真实视图。它看起来像这样:
@interface MyController : NSWindowController
{
IBOutlet NSView* dummyView;
}
@end
@implementation MyController
-(void)windowDidLoad{
NSView* actualView = ...; //create the real view here
[actualView setFrame:[dummyView frame]];
[actualView setAutoresizingMask:[dummyView autoresizingMask]];
NSView* superview = [dummyView superview];
[dummyView removeFromSuperview];
[superview addSubview:actualView];
dummyView = actualView; //just incase dummyView is ever used again
}
@end
答案 2 :(得分:0)
我个人会为2部分添加2个视图。假设topView和bottomView使用界面构建器中的链接将它们链接到您的代码。从那里,您可以使用以下方式管理每个视图的内容:
addSubview (是接收uiview或对象的对象的函数)
您可以使用它将单个对象或视图添加到两个主要视图中:
[topView addSubview:roundedUIButton_instance];
OR
[topView addSubview:another_view_instance];
removeFromSuperview (是用于删除其自身的对象的函数)
[roundedUIButton_instance removeFromSuperview];
OR
[another_view_instance removeFromSuperview];