NSComboBox未在下拉列表中显示当前选定的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSComboBox未在下拉列表中显示当前选定的值相关的知识,希望对你有一定的参考价值。

对Mac应用程序编程很新,我遇到了问题。在我的NSComboBox上,当重新打开下拉列表时,它们不会突出显示当前选定的项目。我可能只是失明或者默认的高亮颜色是透明的。我只是不知道。请参阅下面的图片,了解我的情况。

Dropdown Image

此时我编写的代码非常少,一切都在我的故事板上完成。只是有点困惑为什么它没有做一些应该非常简单的事情。猜猜我在ios领域花了太多时间。

所以决定将整个项目重新创建为一个单独的样本NSCombobox,以证明在运行Xcode 9.2时这对我来说很简单。

Sample Project Settings

我连接的唯一插座是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未在下拉列表中显示当前选定的值的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 中显示选定下拉列表中的值

ReactJS:如何从输入字段的下拉列表中显示选定的值?

PHP & MySQLi - 在下拉列表中显示选定的值两次

如何使用jquery从dot net core mvc中的表中的下拉列表中显示选定的值

获取隐藏下拉列表禁用选定选项的值

根据下拉列表中的选定值显示表单字段Angular TypeScript