【问题标题】:Access to Checkboxes (NSButton) in a Controller View在控制器视图中访问复选框 (NSButton)
【发布时间】:2017-09-27 07:43:18
【问题描述】:

我在 OS X 应用程序中有一个包含 50 个复选框 (NSButton) 的视图。我需要在代码中访问每一个,但我发现的唯一方法是创建 50 个 IBOutlet 绑定。 IBOutlet 集合在 OS X 中不可用。我该怎么办?

【问题讨论】:

  • 使用 for 循环。
  • 但是有没有 50 个 IBOutlets 的方法?
  • 这是您需要以编程方式循环创建复选框的完美案例。

标签: swift xcode macos cocoa


【解决方案1】:

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 语句。好消息是,使用这种方法,您可以拥有无​​限多个复选框。迭代顺序是从左到右,从上到下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-29
    • 2015-07-14
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多