我在OS X应用程序中有一个带有50个复选框的视图(NSButton)。我需要在代码中访问每一个,但我找到的唯一方法是创建50个IBOutlet绑定。 OSO中没有IBOutlet集合。我该怎么办?
答案 0 :(得分:0)
引用ViewController
类中的50个复选框(我假设您使用视图控制器)的一种方法是首先检索包含50个复选框中每个复选框的超级视图。这将是一个NSView
对象。为了区分复选框,我建议在界面构建器中设置不同的标记值,但这实际上取决于您要对复选框执行的操作。然后,您可以使用循环遍历此视图中的每个子视图,如下所示:
for i in view.subviews.filter({$0 as? NSButton != nil}).map({$0 as! NSButton}) {
if i.bezelStyle == .regularSquare && !(i.cell as! NSButtonCell).imageDimsWhenDisabled {
print(i.title)
}
}
if
条件基本上使用复选框的两个属性来区分它们与任何其他类型的NSButton
。
在这个例子中,我只打印了每个复选框的标题。如果要根据复选框执行不同的任务,可以使用switch
语句。好处是,使用此方法,您可以拥有无限多个复选框。迭代顺序从左到右,从上到下。