我有一个编码风格的问题,可能应该问一个高级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>
如果风格不好,那是什么?
谢谢!
答案 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
时,它会写在文档中。