繁体   English   中英

窗口,视图和子视图的创建-Mac OS X

[英]window, view and subviews creation - mac os x

我是Objective-C / Cocoa的新手,我想知道您是否可以为我提供有关我编写的第一个Mac OS X桌面应用程序的准则。

模型部分是自组织映射算法SOM(Kohonen,1982)。

从界面的角度来看,我们的想法是有一个主窗口,其中包含1024x768父视图和192个64x64正方形(子视图)。 子视图的颜色将随着SOM算法的运行而改变。 构建SOM之后,用户可以通过单击它来收听映射到特定广场的声音。

SOM算法已经实现,但是我很难创建接口并将其连接到模型部件。

我想到了通过使用以下代码创建窗口:

NSRect windowRect = NSMakeRect(0.0f, 0.0f, 1024.0f, 790.0f);

NSWindow *window = [[NSWindow alloc] initWithContentRect:windowRect 
                                               styleMask:( NSResizableWindowMask |         NSClosableWindowMask | NSTitledWindowMask) 
                                                 backing:NSBackingStoreBuffered defer:NO];

[window setBackgroundColor:[NSColor blueColor]];    

[window makeKeyAndOrderFront:nil];

然后,我将创建主视图,将主视图添加为窗口内容视图的子视图:

 NSView *view = [[NSView alloc] init]; 

 [window setContentView: view]

最后,我将创建子视图并将其添加为父视图的子视图:

 for(int i=0;i<12;i++)
 {
    for(int j=0;j<16;j++)
    {
       NSView *child = [[NSView alloc]initWithFrame:CGRectMake(64*i,64*j,64, 64)];
       [view addSubview:child];
    }
 }

我的问题是:

1)我的想法有意义吗?

2)这些代码应该去哪里? 我仍然不确定它们应该在AppDelegate还是ViewController的一部分?

3)加载接口的主要方法需要添加什么? 目前,主要方法仅调用涉及音频处理和SOM算法的方法。 我想这里的一般问题是如何连接模型和视图零件。

对于天真的问题,我深表歉意,并在此先感谢您提出的任何想法,这些想法都会帮助我取得进展。

谢谢。

可可的观点有些昂贵。 苹果不鼓励使用大量苹果。 192正在推动它。 另外,如果视图仅是彩色矩形,则仅为此目的使用整个视图对象就没有意义了。 只需定义一个自定义视图即可在其中绘制彩色正方形并处理点击。

另外,您不需要分配标准的NSView并将其设置为窗口的内容视图。 窗口以标准NSView作为内容视图开始。 通常,您仅在以下情况下设置内容视图:a)它是标准NSView (某种子类)以外的东西,或b)它已经设置了子视图的层次结构,并且您想交换该视图。

关于您的问题3,我想说您需要遵循Cocoa应用程序的标准设计。 main()函数应遵循新Cocoa应用程序项目随附的模板。 它通常应该只调用NSApplicationMain() 然后,添加自定义代码的一个好地方是应用程序委托的-applicationDidFinishLaunching:方法。 (我不知道您是否认为应用程序是基于文档的。如果是这样,则设计会有所不同。您将定义文档类和文档窗口,而框架将负责打开一个新文档在启动时。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM