swift之NSComboBox

组合框(NSComBox)是一种下拉选择视图控件,可以通过addItem单个或批量添加文本条目,也可以使用数据源和代理的形式管理每个条目

1.通过属性面板的Items配置

2.通过动态接口加载数据

3.使用数据源方式加载数据

属性说明

Items: 可以输入条目作为显示的列表内容

VisibleItems:最多显示多少条目在界面上,超出的条目可以通过滚动来选择

UsesDataSource:是否使用数据源方式,

响应事件

 

将 action事件绑定到自定义的 selectionChanged方法即可。 indexOfSelectedltem表示选择的

条目的idx序号, string Value表示选择的文本内容,代码如下:

//通过数据源设置数据

class ViewController{

func comBox(){

//定义的局部变量

        let m_combobox = NSComboBox(frame: NSMakeRect(0, 0, 200, 300))

        m_combobox.target = self

        //1.动态增加列表内容Item

 

        m_combobox.addItem(withObjectValue: ("Fre"));

        m_combobox.addItems(withObjectValues: ["March","April","May","June","July","August","September","Octorber"])

        m_combobox.selectItem(at: 0)

        m_combobox.selectItem(withObjectValue: "May")

//        m_combobox.selectAll(m_combobox)

        m_combobox.removeItem(at: 0)

        m_combobox.removeItem(withObjectValue: "May")

        m_combobox.removeAllItems()

//当 NSCombo Box的 uses Data Source属性为tue时,表示要使用数据源的方式配置条目

m_combobox.usesDataSource = true

m_combobox.dataSource = self

        m_combobox.delegate = self

    }

 

fileprivatevar dataSource:NSMutableArray = {

        var dataSource = NSMutableArray(array: ["Any","小王"])

        return dataSource

    }()

}

 

 

使用数据源和代理

当 NSCombo Box的 uses Data Source属性为tue时,表示要使用数据源的方式配置条目。使

用数据源的方式可以非常灵活地使用自定义的数据模型类去配置要显示的文本项。数据源数据

配置好以后,调用 reload Data方法完成它的数据加载刷新

下面的代码配置组合框使用数据源并且设置了代理:

 

extension ViewController:NSComboBoxDelegate,NSComboBoxDataSource{

    

    func numberOfItems(in comboBox: NSComboBox) -> Int {

        

        return self.dataSource.count

    }

    func comboBox(_ comboBox: NSComboBox, objectValueForItemAt index: Int) -> Any? {

        return self.dataSource[index]

    }

    func comboBox(_ comboBox: NSComboBox, indexOfItemWithStringValue string: String) -> Int {

        return dataSource.index(of:string)

    }

    func comboBoxSelectionDidChange(_ notification: Notification) {

        let comBox = notification.object as! NSComboBox

        let selectedIndex = comBox.indexOfSelectedItem

        let selectedContent = comBox.stringValue

        print("selectedIndex = \(selectedIndex) selectedContent = \(selectedContent)")

    }

}

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...