创建具有多个选项卡的选项卡视图的推荐做法是什么。我应该为所有视图使用单个 XIB 文件还是每个视图使用不同的 XIB?我的偏好是为选项卡视图中的每个视图使用多个控制器,因此使用不同的 xib 文件。我怎样才能实现它?对于每个选项卡视图,是否可以在单个 xib 文件中有多个视图,每个视图都有不同的控制器?
2 回答
标签总是相同的,还是动态的?如果它们总是相同的,我倾向于使用单个 xib 文件,只是因为它很容易。您仍然可以使用多个控制器对象 - 只需将它们设为 的子类NSObject
,然后将它们全部放入同一个 xib 中。
我确实做了一个快速的谷歌,看看是否有一种简单的方法可以将NSViewController
s 与标签视图一起使用,我找到了这个线程。其中包含一些关于如何使用它们的示例代码,这将为您提供一个单独的控制器类和每个选项卡的 xib。显然,我没有尝试过该代码,所以我不能保证它,但它可能是一个足够好的开始。(在那个示例代码中,每次切换选项卡时它都会实例化一个新的视图控制器,这可能不是你想要的——如果是我,我会在第一次切换选项卡时实例化它们,然后保留它们在窗口控制器的字典中,然后在随后的开关上拉出已经存在的相应视图控制器。)
最佳方法取决于选项卡的复杂性。但是,当您向其中添加多个视图时,XIB 很快就会变得杂乱无章。此外,您还冒着控制器臃肿的风险。
我想说最好的方法是每个选项卡都有一个视图和一个控制器。这将使您的应用程序的未来扩展更容易实现。
您将拥有一个主控制器(窗口或视图)来处理包含您的选项卡视图的视图(或窗口)。此控制器充当您的代表NSTabView
(请参阅 参考资料NSTabViewDelegate
)。
一旦您的控制器收到tabView:didSelectTabViewItem:
消息,您就可以创建管理该特定选项卡的子控制器。该控制器将实例化其关联的视图 ( initWithNib
) 并将其添加到视图层次结构中。您可以对选项卡视图中的每个选项卡重复此过程。您可以通过主(顶级)控制器维护每个子控制器的列表的方式进行设置,因此您只需要创建一次。