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

时间:2010-08-29 13:52:57

标签: cocoa

使用IB,我将NSView(menuView)放在另一个内部。

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

我想:“[self.menuView setHidden:NO]”会取消隐藏,但似乎无法正常工作。

我还需要做什么?

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

您是否已经验证了menuView是否已连接(NSLog()之前显示它),并且它实际上有一些内容?

答案 2 :(得分:0)

menuView.hidden = NO;

可能?

答案 3 :(得分:0)

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

你在笔尖中实例化了Fred,对吧?

你有Fred加载笔尖,对吧?

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

如果两者的答案都是“是”,那么继续阅读。

那是错的。弗雷德应该只做这两件事中的一件。有可能,你打算让弗雷德成为文件的所有者,并在那里连接连接。你在笔尖中创建的额外Fred就是那个 - 额外的Fred,第二个加载了nib的Fred。你有两个Freds,你报告连接的那个(响应一个动作消息,我猜)不是你连接到菜单视图的那个插座。

在笔尖中取消Fred,只留下加载笔尖的Fred。在nib中,将File的Owner声明为Fred的类,在Fred的实现中,确保在加载nib时你是File的所有者。

如果你正在使用NSWindowController加载它,你需要明确地将自己作为所有者;否则,NSWindowController是所有者。由于您希望Fred成为所有者,因此您需要在实例化时告诉窗口控制器。另一种方法是使用NSBundle直接加载笔尖,而无需插入窗口控制器。