跨多个NSViewControllers和XIB拆分NSTabView

时间:2011-09-05 01:57:53

标签: objective-c cocoa xib nsviewcontroller nstabview

我刚刚进入桌面Cocoa开发(我有iOS开发经验)。如果这个问题看起来很基本,请原谅我。

话虽这么说,我正在处理一个包含大量计算和功能的大型程序。有几十个视图,使用NSTabView进行组织。而不是将所有东西都倾倒到一个类的怪物中并创建一个让我的系统瘫痪的XIB文件(Xcode显然效率不高......谁知道?:P)。我希望每个标签都是自己的NSViewController,附带XIB;因此,我想从相应的XIB加载每个选项卡的视图。

我正在考虑使用UITabBarController,但这似乎不起作用(据我所知,没有NSTabViewController)。我不知道该怎么做(或者即使它可能 - 但我不能成为唯一一个有这个问题的人?),我很感激你的帮助。谢谢!

更新:我尝试将控制器的视图分配给选项卡的视图,但很快意识到这不会让我无处可去。是否值得从头开始创建NSTabViewController,还是有解决方案?

2 个答案:

答案 0 :(得分:3)

与iOS开发相比,桌面上的Cocoa开发有一些主要差异。其中之一就是使用视图控制器 - 它们并不是绝对必要的 - 当你使用它们时,无论它包含哪种视图,你都可以坚持使用通用的NSViewController。控制选项卡视图所需的所有方法都在NSTabView类中 - 而不是控制器。

话虽如此,将12个视图放入tabview听起来像是一种与程序交互的痛苦方式。您是否考虑过源 - 详细信息类型设置(想想itunes或带有侧边栏的邮件 - 侧边栏中的每个条目对应不同的视图)?

答案 1 :(得分:1)

我放弃了标签栏,根据索斯伯恩的建议,我使用了拆分视图 - 或者说我在侧面放置了一个桌面视图,并且自定义视图占据了大部分屏幕。然后,在我的AppDelegate中,我有单独的控制器作为ivars(我需要单独的控制器,因为涉及很多计算,我不希望有一个怪物类处理它们)。它们将被延迟加载,视图将根据需要分配给当前控制器的视图。