gpt4 book ai didi

objective-c - 向 NSView 添加 subview 会显示,但无法删除

转载 作者:行者123 更新时间:2023-12-03 17:58:30 24 4
gpt4 key购买 nike

在我的应用程序窗口中,我有两个 NSView。左侧 NSView(“菜单”)包含一些按钮。当单击其中一个按钮时,它应该更改右侧 NSView 的内容(“内容”)。

对于右侧的每个 View ,我都有一个单独的 NSViewControllers 来加载,并且它们的 View 被添加为 subview 。当按下左侧的另一个按钮时,右侧添加的 subview 应被删除,并且新 View 应作为 subview 加载。

为了实现此目的,我使用以下内容在 AppDelegate 中加载菜单:

 MenuVC *menuSubView = [[MenuVC alloc] initWithNibName:@"MenuVC" bundle: nil];
menuSubView.contentView = (NSView*)[self contentView];
[[self menuView] addSubview:[menuSubView view]];

这很好用。正如你所看到的,我在 Menu VC 中有一个 NSView 指针,它指向 contentView,以便我可以用 subview 填充它。

现在,作为按下其中一个按钮的方法,我执行以下操作:

SomeContentVC *subView = [[SomeContentVC alloc] initWithNibName:@"SomeContentVC" bundle:nil];
[self.contentView addSubview:[subView view]];

这不起作用。

但是,如果我从 MenuViewController 实现的 awakeFromNib 方法添加 subview (在应用程序打开时的默认内容的情况下),它就可以工作。但是,当我尝试使用

删除该 subview 时
[[self.contentView setSubviews:[NSArray array]];

我不能。有趣的是,如果我尝试计算 subview 的数量(即使在 awakeFromNib 方法中添加了一个),它也会为 self.contentView 返回 0 个 subview 。为什么?我怎样才能让它正常工作?

谢谢

最佳答案

事实是,消息传送 self.contentView 没有实现任何目标,除了对于某些事情,返回 0 可能意味着 self.contentView 为零。

您是否可能无意中拥有两个 MenuVC 实例?也许一个在 NIB 中实例化,一个在代码中实例化?

如有疑问,请记录所有内容。使用各种方法记录self。创建后立即记录 menuSubView 。分配后立即记录 menuSubView.contentView 。等等。最终,您可能会发现您正在与与您想象的不同的对象进行交互。

关于objective-c - 向 NSView 添加 subview 会显示,但无法删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10083170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com