Cocoa:将IB中的视图设置为隐藏。。。无法取消隐藏它!

Cocoa:将IB中的视图设置为隐藏。。。无法取消隐藏它!,cocoa,Cocoa,使用IB,我将一个NSView(menuView)放入另一个NSView中 我已经设置了我的插座并将其连接到menuView 我想:“[self.menuView setHidden:NO]”会将其取消隐藏,但它似乎不起作用 我还需要做什么 menuView.hidden = NO; 也许?您是否验证了menuView已连接(在显示它之前先将其记录下来),并且它确实包含一些内容?IB view对象是否连接到menuView变量?否则修改menuView将是不可操作的。我将在调试器中运行它,并确

使用IB,我将一个NSView(menuView)放入另一个NSView中

我已经设置了我的插座并将其连接到menuView

我想:“[self.menuView setHidden:NO]”会将其取消隐藏,但它似乎不起作用

我还需要做什么

menuView.hidden = NO;

也许?

您是否验证了menuView已连接(在显示它之前先将其记录下来),并且它确实包含一些内容?

IB view对象是否连接到menuView变量?否则修改menuView将是不可操作的。我将在调试器中运行它,并确保在setHidden调用时menuView不为null。如果是,请返回IB并确保将视图连接到插座。

让我们用连接的插座调用对象

你在nib中实例化了Fred,对吗

你让弗雷德装笔尖,对吗

如果对这两个问题中的任何一个的回答是“否”,那么忽略这个答案

如果两个问题的答案都是“是”,那么继续阅读

那是错误的。弗雷德应该只做这两件事中的一件。很有可能,你想让弗雷德成为文件的所有者,并在那里建立连接。您在笔尖中创建的额外Fred只是一个额外的Fred,仅次于加载笔尖的Fred。您有两个Fred,您报告连接的那个(我猜是响应操作消息的)不是您连接到菜单视图的插座的那个

杀死笔尖上的弗雷德,只留下装笔尖的弗雷德。在nib中,将文件的所有者声明为Fred的类,在Fred的实现中,确保加载nib时您是文件的所有者


如果您使用NSWindowController加载它,则需要显式地将自己传递为所有者;否则,NSWindowController是所有者。由于您希望Fred成为所有者,因此需要在实例化窗口控制器时告诉它。另一种方法是使用NSBundle直接加载nib,而无需中间的窗口控制器。

如果我不将其设置为隐藏在IB中,它将显示其全部功能。IB中的视图显示。。。但是你连接了menuView了吗Ben是这么说的,从你的代码到IB中的视图的变量。我检查过了,IB中肯定有连接。我试过“NSLOG(@“%@”,self.menuView)”(不确定是否正确……我是新手),我得到了“null”。这只是海报上列出的同一代码的不同语法。