跨多个 NSViewController 和 XIB 拆分 NSTabView

Posted

技术标签:

【中文标题】跨多个 NSViewController 和 XIB 拆分 NSTabView【英文标题】:Split NSTabView across multiple NSViewControllers and XIBs 【发布时间】:2011-09-05 01:57:52 【问题描述】:

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

话虽如此,我正在处理一个需要处理大量计算和功能的大型程序。几乎有十几个视图,用 NSTabView 组织。而不是将所有内容都倾倒到一个类的怪物中并创建一个让我的系统崩溃的 XIB 文件(Xcode 显然不是那么高效......谁知道?:P)。我希望每个选项卡都是它自己的 NSViewController 以及随附的 XIB;因此,我想从相应的 XIB 加载每个选项卡的视图。

我是根据 UITabBarController 来考虑的,但这似乎不起作用(据我所知,没有 NSTabViewController)。我不确定如何做到这一点(或者即使有可能——但我不能是唯一一个遇到这个问题的人?),我会很感激任何帮助。谢谢!

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

【问题讨论】:

+1 好问题我目前正在努力解决同样的问题,与 iOS 等的背景相同。 【参考方案1】:

桌面上的 Cocoa 开发与 iOS 开发有一些主要区别。其中之一是视图控制器的使用——它们并不是绝对必要的——当你使用它们时,你可以坚持使用通用的 NSViewController,而不管它包含什么样的视图。控制选项卡视图所需的所有方法都在 NSTabView 类中 - 而不是控制器。

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

【讨论】:

感谢您的回答。我还没有考虑过,但既然你提到了,我会的……呃,我该怎么做?我将使用哪些课程开始学习? 本质上是一个NSSplitView,左边有一个NSTableView,右边有一个NSView。右侧确实取决于您的数据。 顺便说一下,你可能想看看这个:***.com/questions/1670727/…【参考方案2】:

我已经放弃了标签栏,并且根据 sosborn 的建议,我使用了拆分视图,或者更确切地说,我在侧面放置了一个表格视图,而自定义视图占据了大部分屏幕。然后,在我的 AppDelegate 中,我有单独的控制器作为 ivars(我需要单独的控制器,因为涉及到很多计算,我不想让怪物类处理所有这些)。它们将被延迟加载,并且视图将根据需要分配给当前控制器的视图。

【讨论】:

以上是关于跨多个 NSViewController 和 XIB 拆分 NSTabView的主要内容,如果未能解决你的问题,请参考以下文章

我应该为此使用 NSViewController 吗?

将 NSViewController 与自定义视图一起使用

NSViewController 和界面生成器

Cocoa:NSViewController 视图中的设置器

osx:在 NSWindowController 和 NSViewController 之间进行委托

交换视图 - NSWindowController 和 NSViewController(s)