在我的应用程序窗口中,我有两个 NSView。左侧的 NSView(“菜单”)包含几个按钮。单击其中一个按钮时,它应该更改右侧 NSView 的内容(“内容”)。
对于右侧的每个视图,我都有一个单独的 NSViewControllers 被加载,它们的视图被添加为子视图。当在左侧按下另一个按钮时,应删除右侧添加的子视图,并且应将新视图作为子视图加载。
为此,我在 AppDelegate 中加载了我的菜单,其中包含以下内容:
MenuVC *menuSubView = [[MenuVC alloc] initWithNibName:@"MenuVC" bundle: nil];
menuSubView.contentView = (NSView*)[self contentView];
[[self menuView] addSubview:[menuSubView view]];
这工作正常。如您所见,我在 Menu VC 中有一个 NSView 指针,它指向 contentView,以便我可以用子视图填充它。
现在,作为其中一个按钮按下的方法,我执行以下操作:
SomeContentVC *subView = [[SomeContentVC alloc] initWithNibName:@"SomeContentVC" bundle:nil];
[self.contentView addSubview:[subView view]];
这不起作用。
但是,如果我从 MenuViewController 实现的 awakeFromNib 方法添加一个子视图(在应用程序打开时的默认内容的情况下)它可以工作。但是,当我尝试使用删除该子视图时
[[self.contentView setSubviews:[NSArray array]];
我不能。有趣的是,如果我尝试计算子视图的数量(即使在 awakeFromNib 方法中添加了一个),它也会为 self.contentView 返回 0 个子视图。为什么?我怎样才能让它正常工作?
谢谢