NSComboBox未在下拉列表中显示当前选定的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSComboBox未在下拉列表中显示当前选定的值相关的知识,希望对你有一定的参考价值。
对Mac应用程序编程很新,我遇到了问题。在我的NSComboBox上,当重新打开下拉列表时,它们不会突出显示当前选定的项目。我可能只是失明或者默认的高亮颜色是透明的。我只是不知道。请参阅下面的图片,了解我的情况。
此时我编写的代码非常少,一切都在我的故事板上完成。只是有点困惑为什么它没有做一些应该非常简单的事情。猜猜我在ios领域花了太多时间。
所以决定将整个项目重新创建为一个单独的样本NSCombobox,以证明在运行Xcode 9.2时这对我来说很简单。
我连接的唯一插座是NSComboBox的委托和数据源。并且在NSComboBox上更改的唯一设置是启用数据源,并更改行为toe Selectable。运行此组合的代码同样简单:
import Cocoa
class ViewController: NSViewController, NSComboBoxDelegate, NSComboBoxDataSource {
@IBOutlet weak var combo: NSComboBox!
var dataSource: [String] = ["Off"]
override func viewDidLoad() {
super.viewDidLoad()
for index in 1...512 {
dataSource.append("(index)")
}
combo.reloadData()
combo.selectItem(at: 0)
}
func comboBox(_ comboBox: NSComboBox, objectValueForItemAt index: Int) -> Any? {
return dataSource[index]
}
func numberOfItems(in comboBox: NSComboBox) -> Int {
return dataSource.count
}
}
根据Apple文档,下拉列表应显示所选项目:Apple NSComboBox Docs
答案
列表将打开您离开的位置。实现NSComboBoxDataSource
方法
optional func comboBox(_ comboBox: NSComboBox, indexOfItemWithStringValue string: String) -> Int
让组合框知道要选择哪一行。
回报价值
与指定字符串匹配的项的索引,如果没有项匹配则为NSNotFound。
讨论
NSComboBox对象使用此方法将弹出列表的选定项与文本字段的内容同步。如果未实现此方法,则接收方不会将弹出列表的选定项与文本字段的内容同步。
以上是关于NSComboBox未在下拉列表中显示当前选定的值的主要内容,如果未能解决你的问题,请参考以下文章