2011-12-26 61 views
0

從窗口獲取對象的最佳方式是什麼?我有一個包含81個NSTextFields的數獨類網格,我寧願只是簡單地有一個NSTextFields數組,而不是81個通過IBOutlets鏈接的NSTextFields。 例如:如果有一種方法可以將消息發送給NSWindow,例如getObject:(NSString *)title,然後使用for-loop將這些NSTextFields添加到NSMutableArray,那將是理想的。任何建議,將不勝感激!從窗口獲取對象可可

路加福音

回答

2

你可以做到以下幾點:在嘮叨

NSArray *subviews = [_window subViews]; 
for(NSView *subview in subviews) 
{ 
    if([subview isKindOfClass:[NSTextField class]]) 
    { 
    [_textFields addObject:subview]; 
    } 
} 

在-awakeFromNib

現在,我不認爲你應該做這種方式。創建自定義NSView以充當「Sudoku」視圖,在代碼中更易於使用,更適合應用程序的性能。用81個textField加載窗口非常繁重+使用更多的內存。

+0

好吧,那裏沒問題,我正要把它放在另一個視圖中,並添加一個視圖控制器,使它更加模塊化和可擴展。我只是想知道是否可以直接從窗口/視圖中獲取對象,而不是使用IBOutlets。謝謝!路加福音 – lukecampbell 2011-12-26 15:00:39

2

這聽起來像你會更好的NSTextFieldCells的NSMatrix

矩陣是一個單個對象,您可以使用單個插座連接(或其他屬性)進行引用,並且它知道行和列(因此不需要將它們轉換爲線性索引和從線性索引轉換)。您也可以訪問其單獨的單元格以單獨配置它們;例如,設置填充值並禁用這些單元,以便用戶不能更改它們。

相關問題