【发布时间】:2012-04-10 04:40:03
【问题描述】:
在我的应用程序窗口中,我有两个 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 个子视图。为什么?我怎样才能让它正常工作?
谢谢
【问题讨论】:
-
什么是 self.contentView?据我所知 NSViewController 没有这样的属性,除非你自己创建它。
-
在 AppDelegate 中,它是一个指向右侧 NSView(我的应用程序的内容部分)的 NSView 指针。在 MenuVC 中,我还有一个 NSView 指针,它在创建时从 AppDelegate 填充,并且我传递 AppDelegate 的指针,以便我可以在主应用程序窗口中填充正确的 NSView。也许这有助于lh5.googleusercontent.com/-rsaZ6LZLeqM/T4PCBu-z43I/AAAAAAAAAAo/…
标签: objective-c cocoa nsview addsubview nsviewcontroller