在Cocoa桌面应用程序中使用多个选项卡创建选项卡视图的建议做法是什么

时间:2012-03-12 11:13:19

标签: cocoa tabview

使用多个标签创建标签视图的建议做法是什么。我应该对所有视图使用单个XIB文件还是每个视图使用不同的XIB?我的偏好是在选项卡视图中为每个视图使用多个控制器,因此使用不同的xib文件。我怎样才能实现它? 对于每个选项卡视图,是否可以在单个xib文件中具有多个视图,每个视图都具有不同的控制器?

2 个答案:

答案 0 :(得分:1)

标签是否始终相同,还是动态的?如果它们总是相同的,我倾向于使用单个xib文件,因为它很容易。您仍然可以使用多个控制器对象 - 只需将它们设为NSObject的子类,然后将它们全部放入同一个xib中。

我确实做了一个快速的Google,看看是否有一种简单的方法可以将NSViewController用于标签视图,我找到了this thread。它包含一些如何使用它们的示例代码,这将为您提供单独的控制器类和每个选项卡的xib。显然,我没有尝试过这个代码,所以我不能保证它,但它可能是一个很好的开始。 (在该示例代码中,每次切换选项卡时都会实例化一个新的视图控制器,这可能不是您想要的 - 如果是我,我会在第一次交换选项卡时实例化它们,然后保留它们在窗口控制器的字典中,然后在后续的开关上拉出已经存在的相应视图控制器。)

答案 1 :(得分:0)

最佳方法取决于标签的复杂程度。但是,当您向它们添加多个视图时,XIB很快就会变得混乱和混乱。你也冒着臃肿的控制器的风险。

我想说最好的方法是每个标签都有一个视图和一个控制器。这将使您的应用的未来扩展更容易实现。

您将拥有一个主控制器(窗口或视图),用于处理保存选项卡视图的视图(或窗口)。此控制器充当NSTabView的代理人(请参阅NSTabViewDelegate)。

控制器收到tabView:didSelectTabViewItem:消息后,您可以创建管理该特定选项卡的子控制器。此控制器将实例化其关联的视图(initWithNib)并将其添加到视图层次结构中。您可以在选项卡视图中为每个选项卡重复此过程。您可以设置主要(顶级)控制器维护每个子控制器的列表,这样您只需要创建一次。