从窗口获取对象的最佳方法是什么。我有一个类似数独的网格,有81个NSTextFields,我宁愿只有一个NSTextFields数组,而不是通过IBOutlets链接的81个单独的NSTextFields。 例如:如果有一种方法向NSWindow发送消息,例如getObject:(NSString *)title,然后使用for循环将这些NSTextField添加到NSMutableArray,那将是理想的。任何建议将不胜感激!
路加福音
答案 0 :(得分:2)
您可以执行以下操作:
NSArray *subviews = [_window subViews];
for(NSView *subview in subviews)
{
if( [subview isKindOfClass:[NSTextField class]] )
{
[_textFields addObject:subview];
}
}
in -awakeFromNib
现在为了唠叨,我不认为你应该这样做。创建自定义NSView以充当" Sudoku"视图在代码中更容易使用,并且更适合应用程序的性能。使用81个textField加载窗口非常繁重+使用更多内存。
答案 1 :(得分:2)
听起来对我来说,使用NSMatrix NSTextFieldCells会好得多。
矩阵是一个单个对象,您可以使用单个出口连接(或其他属性)进行引用,它知道行和列(因此无需将这些对象与线性索引进行转换)。您还可以访问其各个单元格以单独配置它们;例如,设置填充值并禁用这些单元格,以便用户无法更改它们。