Objective c 从窗口获取对象
从窗口获取对象的最佳方式是什么。我有一个类似数独的由81个NSTextFields组成的网格,我更喜欢简单地拥有一个NSTextFields数组,而不是通过IBOutlets链接的81个单独的NSTextFields。 例如:如果有一种方法可以将消息发送到NSWindow,例如getObject:(NSString*)title,然后使用For循环将这些NSTextFields添加到NSMutableArray,那么这将是理想的方法。如有任何建议,将不胜感激Objective c 从窗口获取对象,objective-c,macos,cocoa,Objective C,Macos,Cocoa,从窗口获取对象的最佳方式是什么。我有一个类似数独的由81个NSTextFields组成的网格,我更喜欢简单地拥有一个NSTextFields数组,而不是通过IBOutlets链接的81个单独的NSTextFields。 例如:如果有一种方法可以将消息发送到NSWindow,例如getObject:(NSString*)title,然后使用For循环将这些NSTextFields添加到NSMutableArray,那么这将是理想的方法。如有任何建议,将不胜感激 -卢克您可以执行以下操作: NSAr
-卢克您可以执行以下操作:
NSArray *subviews = [_window subViews];
for(NSView *subview in subviews)
{
if( [subview isKindOfClass:[NSTextField class]] )
{
[_textFields addObject:subview];
}
}
in-awakeFromNib
至于唠叨,我认为你不应该这样做。创建一个自定义的NSView作为“数独”视图将更易于在代码中使用,并有利于提高应用程序的性能。加载包含81个文本字段的窗口相当繁重,而且会占用大量内存。您可以执行以下操作:
NSArray *subviews = [_window subViews];
for(NSView *subview in subviews)
{
if( [subview isKindOfClass:[NSTextField class]] )
{
[_textFields addObject:subview];
}
}
in-awakeFromNib
至于唠叨,我认为你不应该这样做。创建一个自定义的NSView作为“数独”视图将更易于在代码中使用,并有利于提高应用程序的性能。加载包含81个文本字段的窗口相当繁重,而且会占用大量内存。我觉得使用一组NSTEXTFIELDCELL会更好
矩阵是单个对象,您可以使用单个出口连接(或其他属性)引用它,它知道行和列(因此无需将它们转换为线性索引)。您还可以访问其单个单元格以单独配置它们;例如,设置填充值并禁用这些单元格,以便用户无法更改它们。在我看来,使用NSTEXTFIELDCELL会更好
矩阵是单个对象,您可以使用单个出口连接(或其他属性)引用它,它知道行和列(因此无需将它们转换为线性索引)。您还可以访问其单个单元格以单独配置它们;例如,设置填充值并禁用这些单元格,以便用户无法更改它们。好的,没问题,我准备将其放在另一个视图中,并添加一个视图控制器,以使其更模块化和更可扩展。我只是想知道我是否可以直接从窗口/视图而不是使用IBOutlets获取对象。谢谢-LukeOk,没问题,我正要把它放在另一个视图中,并添加一个视图控制器,使它更模块化和更可伸缩。我只是想知道我是否可以直接从窗口/视图而不是使用IBOutlets获取对象。谢谢-卢克