我有两个组合框使用与数据源相同的字典。在第一个组合框中显示键,在第二个组合框中显示值。
首先,我需要一些关于实现数据源委托方法的帮助;请参见下面的代码列表。相关的箱子是地板箱和房间箱。忽略其他2,因为它们将从本地变量或接口填充。
另外,假设对于一楼[key=0]我有3个房间[value=3],如何取3的值并将其变成RoomsBox中的3个项目;以便每次楼层更改房间的框时,都有相应数量的项目(如果有意义的话)。我真的很感谢你的帮助,谢谢你。

class RoomAndAlarmTypesVC: NSViewController, NSComboBoxDelegate, NSComboBoxDataSource {

//MARK: - Properties

private var floorsAndRooms = [String: String]()

@IBOutlet private weak var floorsBox: NSComboBox!

@IBOutlet private weak var roomsBox: NSComboBox!

@IBOutlet private weak var roomType: NSComboBox!

@IBOutlet private weak var alarmType: NSComboBox!

//MARK: - Actions

override func viewDidLoad() {
    super.viewDidLoad()
    floorsAndRooms = representedObject as! [String : String]
    floorsBox.usesDataSource = true
    roomsBox.usesDataSource = true
    roomType.usesDataSource = true
    alarmType.usesDataSource = true

    floorsBox.delegate = self
    roomsBox.delegate = self
    roomType.delegate = self
    alarmType.delegate = self

    floorsBox.dataSource = self
    roomsBox.dataSource = self
    roomType.dataSource = self
    alarmType.dataSource = self
}
@IBAction private func setTheSystem(_ sender: NSButton) {

}

func numberOfItems(in comboBox: NSComboBox) -> Int {
    what do i do here?
}

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

}

最佳答案

使用基于发件人的switch语句(combobox参数)
例如:

switch comboBox
{
    case floorsBox :  return // the data for floors
    case roomsBox :  return // the data for rooms
    ...
}

关于swift - 如何在同一 View Controller 中为多个组合框实现数据源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42911533/

10-08 21:22