我在 OS X 应用程序中有一个包含 50 个复选框 (NSButton) 的 View 。我需要在代码中访问每一个,但我找到的唯一方法是创建 50 个 IBOutlet 绑定(bind)。 IBOutlet 集合在 OS X 中不可用。我该怎么办?
最佳答案
引用 ViewController
类中的 50 个复选框(我假设您使用 View Controller )的一种方法是首先检索包含 50 个复选框的 super View 。这将是一个 NSView 对象。为了区分复选框,我建议在界面生成器中设置不同的标签值,但这实际上取决于您想要对复选框执行什么操作。然后,您可以使用循环来迭代此 View 中的每个 subview ,如下所示:
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
语句。好处是,通过这种方法,您可以拥有无限多个复选框。迭代顺序是从左到右、从上到下。
关于swift - 访问 Controller View 中的复选框 (NSButton),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46442152/