我是一個Objective-C/Cocoa新手,我想知道你是否可以向我提供關於我寫的第一個Mac OS X桌面應用程序的一些指導。窗口,視圖和子視圖創建 - 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算法的方法。我想這裏的一般問題是如何連接模型和視圖部分。
對於那些天真的問題,我很抱歉,並且提前感謝您提出任何有助於我取得進展的想法。
謝謝。
謝謝你的回答。假設我只有6個子視圖,而不是192.父視圖是否是窗口的內容視圖?一個NSViewController是否足以管理子視圖的實例化? – user1352042 2012-04-25 18:29:22
如果你喜歡,那麼,當然,你可以添加6個子視圖到窗口內容視圖。一個'NSViewController'通常管理一個單一的視圖,它可能是一個層次結構的根。如果您打算將網格視圖封裝到單獨的NIB中,那麼讓視圖控制器擁有並加載該NIB是有意義的。如果你的網格幾乎是一次性的,只能用於一個窗口,那麼你只需要一個窗口控制器來控制窗口內的所有內容。 – 2012-04-25 20:19:09