使用 Cocoa 在 Swift 4.0 中以编程方式创建复选框的标准方法是什么?
What is the standard way to create a checkbox programmatically in Swift 4.0 using Cocoa?
我被要求更新现有的 macOS 程序,并获得了一个用 Swift 4.0 编写的 Xcode 项目。该程序使用 Cocoa 以编程方式生成界面。
我以前没有用过Swift(或Xcode),也不熟悉Cocoa,所以我想边走边学,但我是可以使用以下代码将按钮添加到界面:
public lazy var phaseInvertButton: NSButton = {
let button = NSButton()
self.addSubview(button)
return button
}()
但是,当我尝试使用相同的代码和额外的一行添加复选框时,
button.setButtonType(NSSwitchButton)
,我得到一个错误:
'NSSwitchButton' is unavailable in Swift.
我也试过用
public lazy var phaseInvertButton: NSSwitchButton
,但得到了同样的错误。根据 Cocoa 文档,NSSwitchButton 是 NSButton 的子类型,但我似乎无法在 Swift.
中使用它
任何人都可以告诉我如何在这种情况下以编程方式创建复选框吗?
您可以使用:
let button = NSButton(checkboxWithTitle:"Title" target:nil action:nil)
如果你想坚持设置 NSButton
的按钮类型,你想要的类型是 .switch
:
button.setButtonType(.switch)
我被要求更新现有的 macOS 程序,并获得了一个用 Swift 4.0 编写的 Xcode 项目。该程序使用 Cocoa 以编程方式生成界面。
我以前没有用过Swift(或Xcode),也不熟悉Cocoa,所以我想边走边学,但我是可以使用以下代码将按钮添加到界面:
public lazy var phaseInvertButton: NSButton = {
let button = NSButton()
self.addSubview(button)
return button
}()
但是,当我尝试使用相同的代码和额外的一行添加复选框时,
button.setButtonType(NSSwitchButton)
,我得到一个错误:
'NSSwitchButton' is unavailable in Swift.
我也试过用
public lazy var phaseInvertButton: NSSwitchButton
,但得到了同样的错误。根据 Cocoa 文档,NSSwitchButton 是 NSButton 的子类型,但我似乎无法在 Swift.
任何人都可以告诉我如何在这种情况下以编程方式创建复选框吗?
您可以使用:
let button = NSButton(checkboxWithTitle:"Title" target:nil action:nil)
如果你想坚持设置 NSButton
的按钮类型,你想要的类型是 .switch
:
button.setButtonType(.switch)