2011-12-26 64 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

矩阵是一个单个对象,您可以使用单个插座连接(或其他属性)进行引用,并且它知道行和列(因此不需要将它们转换为线性索引和从线性索引转换)。您也可以访问其单独的单元格以单独配置它们;例如,设置填充值并禁用这些单元,以便用户不能更改它们。

相关问题