隐藏来自另一个子视图类的子视图

时间:2010-11-28 21:51:38

标签: objective-c cocoa macos

我是Cocoa和Ojective-C的新手。 “随时随地学习是我的理念”。这是我的第一个Cocoa项目。

基本上,我使用Interface Builder创建一个主NSView(让我们称之为MainView),在其中我有两个子NSView(让我们称之为ViewNS1和ViewNS2)。而ViewNS1绑定的是view1类,ViewNS2绑定到view2类。

当我点击ViewNS1时,我想隐藏ViewNS2视图。在我的view1类view1.m文件中,我在[ - void] mouseDown:(NSEvent *)事件中有[viewNS2 setHidden:YES]。运行时没有错误,但它不起作用。然而,我可以在我的MainView.m中成功地执行[viewNS2 setHidden:YES]并且它工作正常。此外,如果我从view1.m执行[viewNS1 setHidden:YES],那么它将隐藏自己的视图。

我认为这是非常基础和基本的...但是找不到解决方案。

“教学时刻”任何人?

2 个答案:

答案 0 :(得分:2)

ViewNS1控制器应对点击进行响应并隐藏ViewNS2ViewNS1不需要对ViewNS2有任何直接的了解 - 这是MVC模式的重点,消除这些依赖关系并减少耦合。

答案 1 :(得分:0)

我在本网站的另一篇帖子中找到了答案。这是我的解决方案: 我在view1.m中的mouseDown事件中使用了[self.superview hideViews1]。其中hideViews1是来自MainView.m的方法,它将隐藏所有需要隐藏的视图,[viewNS2 setHidden:YES]等。