簡體   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