2

我的意思是,说真的,我完全不明白。

我正在编写这个应用程序,我需要一个侧边栏来更改窗口主要部分的内容。

我阅读了一些关于 ViewController、WindowController 等的文档。我不明白这一切都应该是“简单”甚至是模块化的。

所以,让我们举这个例子。

我有这个应用程序,它由左侧的简单菜单和中间的主视图组成,可能包含也可能不包含子菜单(基于我们正在查看的页面)。我希望这些视图在同一个窗口上,并且彼此独立。主屏幕应该只显示它​​的内容,而对菜单、窗口等一无所知。

我创建了几个 ViewController,一个用于我想向用户显示的每个视图,每个视图都有自己的 Xib 文件,我可以在其中绘制我希望它显示的界面。

如何根据用户在左侧尺寸上选择的内容更改主视图?我不是在谈论代码本身,而是在谈论它背后的逻辑应该如何工作。

窗口控制器应该知道它的部分吗?主菜单是否应该包含主窗口以便可以更改它?我应该在主窗口中使用占位符(自定义视图)来插入其他视图吗?

4

1 回答 1

2

您希望使主视图独立于菜单、窗口等,这是一个很好的愿望。当然,没有一种方法可以做到这一点,但我的方法是让窗口控制器成为处理从菜单获取输入并将主视图区域切换到正确视图的对象。

为了实际处理切换视图,我会使用一个正是为此目的而制作的 NSTabView。您可以在 Interface Builder 中对其进行设置,使其实际上不绘制选项卡,对用户“不可见”,而只是以编程方式切换选项卡。

选项卡视图的一个问题是它本质上并不是为了在多个视图控制器的视图之间切换而设计的(NSViewController 是 Cocoa 历史上一个相对较新的类)。因此,您必须让窗口控制器保留对视图控制器的(强)引用(即拥有它们),并根据需要将它们的视图传递给选项卡视图。我在许多应用程序中使用了这种精确的方法,并且效果很好。

于 2013-07-08T16:35:04.157 回答