1

我有一个编码风格问题,可能应该向工作中的高级 mac 程序员询问 - 但由于我是唯一的 mac 程序员,所以它是。我的软件有一个弹出式 GUI(3D 模型、数据可视化),弹出式主要是一个选项卡式控件,每个选项卡中有大量内容(滑块、单选按钮、复选框等),大约有 20 个每个选项卡的控件,可能还有六个选项卡……对所有视图使用单个控制器将很快变得笨拙。

是否有一个加载一堆标签的 MainViewController 好样式?

NSView *tabA = [[NSView alloc] initWithNibName:@"tabA.nib" bundle:[NSBundle bundleWithPath:@"/Applications/BOB.app"]];
NSView *tabB = [[NSView alloc] initWithNibName:@"tabB.nib" bundle:[NSBundle bundleWithPath:@"/Applications/BOB.app"]];

这有点像我在 iOS 上的做法,但我不确定 Mac OS X。我更喜欢提供可维护性和灵活性的风格,因为代码正在通过原型设计,我可能需要经常更改它。

如果这不是好的风格,那是什么?

谢谢!

4

1 回答 1

2

我认为你的风格是合理的。您为每个选项卡创建一个NSViewController子类,并将其分配给NSTabViewusing NSTabViewItem

顺便说一句,我认为最好有

NSViewController *tabAcontroller = [[TabAController alloc] init]; 

与定义@interface TabAController:NSViewController ... @endinit

-init{
    self=[super initWithNibName:@"tabA" bundle:nil];
    if(self){
        ...
    }
    return self;
}

.nib请注意,您在拨打 时不需要分机initWithNibName:bundle:。而且您不应该指定应用程序的硬编码路径。在 iOS 中,应用程序的位置是由操作系统给定的(带有神秘的文件夹名称),但在 OS X 上,用户可以自由地将应用程序包移动到他想要的任何地方。因此,永远不要将主包称为[NSBundle bundleWithPath:@"hard coded path"]. 使用 just [NSBundle mainBundle],或者nil在大多数情况下使用 just 。当您可以使用时,它会写在文档中nil

于 2010-07-27T18:33:10.453 回答