代码之家  ›  专栏  ›  技术社区  ›  Stephen Furlani

Cocoa NStabView编码风格问题

  •  1
  • Stephen Furlani  · 技术社区  · 16 年前

    我有一个编码风格的问题,可能应该问一个工作中的高级Mac程序员——但因为我是唯一的Mac程序员,所以它是。我的软件有一个弹出式图形用户界面(3D模型,数据可视化),弹出式界面主要是一个带选项卡的控件,每个选项卡上都有大量内容(滑块、单选按钮、复选框等),每个选项卡上有20个控件,可能还有6个选项卡……对所有视图使用一个控制器将很快变得不明智。

    是否有一个主视图控制器,它加载一组选项卡的良好样式?

    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的情况。我更喜欢一种提供可维护性和灵活性的样式,因为代码正在进行原型设计,我可能需要经常更改它。

    如果样式不好,是什么?

    谢谢!

    1 回复  |  直到 16 年前
        1
  •  2
  •   Yuji    16 年前

    我认为你的款式很合理。你创造了一个 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 当你打电话 initWithNibName:bundle: . 你呢 不应该 指定应用程序的硬编码路径。在iOS中,应用程序的位置是由操作系统给出的(带有神秘的文件夹名),但是在OSX上,用户可以自由地将应用程序包移动到他想要的任何地方。所以,不要将主包称为 [NSBundle bundleWithPath:@"hard coded path"] . 只使用 [NSBundle mainBundle] ,或者只是 nil 在大多数情况下。它写在文档中,当您可以使用 .