Cocoa NSTabView编码风格问题

时间:2010-07-27 12:42:50

标签: cocoa macos coding-style nstabview

我有一个编码风格的问题,可能应该问一个高级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.我更喜欢一种提供可维护性和灵活性的风格,因为代码正在进行原型设计,我可能需要经常更改它。 / p>

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

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为你的风格是合理的。您为每个标签创建了一个NSViewController子类,并使用NSTabView将其分配给NSTabViewItem

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

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

@interface TabAController:NSViewController ... @end init定义为

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

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