2017-03-20 13 views
1

データソースと同じ辞書を使用する2つのコンボボックスがあります。最初のコンボボックスにキーが表示され、2番目のコンボボックスに値が表示されます。複数のコンボボックスのデータソースを同じビューコントローラで実装する方法

まず、データソースデリゲートメソッドの実装には少し助けが必要です。下記のコードをご覧ください。関連するボックスはfloorsBoxとroomsBoxです。他の2つは、ローカル変数またはインターフェースから取り込まれるため、無視してください。 また、1階の[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? 
} 

}

答えて

2

例えば、送信者に基づいて、switchステートメント(あなたのComboBoxパラメータ)

を使用します。

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

はお時間をいただき、ありがとうございます。あなたの答えは完璧です。 switchステートメントからエラーが発生しています。タイプNSComboBoxの値にはメンバー数がありません。これは私が行ったアイテムの数を返そうとしているときに発生します。 –

+0

ありがとうございました。あなたのソリューションの仕事。今私は部屋のボックス内の項目を変更する方法を把握する必要がありますそのボックスで床が変更されたとき –

関連する問題