[英]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.