从窗口获取对象的最佳方式是什么?我有一个包含81个NSTextFields的数独类网格,我宁愿只是简单地有一个NSTextFields数组,而不是81个通过IBOutlets链接的NSTextFields。 例如:如果有一种方法可以将消息发送给NSWindow,例如getObject:(NSString *)title,然后使用for-loop将这些NSTextFields添加到NSMutableArray,那将是理想的。任何建议,将不胜感激!从窗口获取对象可可
路加福音
从窗口获取对象的最佳方式是什么?我有一个包含81个NSTextFields的数独类网格,我宁愿只是简单地有一个NSTextFields数组,而不是81个通过IBOutlets链接的NSTextFields。 例如:如果有一种方法可以将消息发送给NSWindow,例如getObject:(NSString *)title,然后使用for-loop将这些NSTextFields添加到NSMutableArray,那将是理想的。任何建议,将不胜感激!从窗口获取对象可可
路加福音
你可以做到以下几点:在唠叨
NSArray *subviews = [_window subViews];
for(NSView *subview in subviews)
{
if([subview isKindOfClass:[NSTextField class]])
{
[_textFields addObject:subview];
}
}
在-awakeFromNib
现在,我不认为你应该做这种方式。创建自定义NSView以充当“Sudoku”视图,在代码中更易于使用,更适合应用程序的性能。用81个textField加载窗口非常繁重+使用更多的内存。
这听起来像你会更好的NSTextFieldCells的NSMatrix。
矩阵是一个单个对象,您可以使用单个插座连接(或其他属性)进行引用,并且它知道行和列(因此不需要将它们转换为线性索引和从线性索引转换)。您也可以访问其单独的单元格以单独配置它们;例如,设置填充值并禁用这些单元,以便用户不能更改它们。
好吧,那里没问题,我正要把它放在另一个视图中,并添加一个视图控制器,使它更加模块化和可扩展。我只是想知道是否可以直接从窗口/视图中获取对象,而不是使用IBOutlets。谢谢!路加福音 – lukecampbell 2011-12-26 15:00:39