Заполнить NSComboBox из источника данных

Этот код компилируется нормально, но ComboBox (cbxColors) пуст — не заполняется из источника данных (массив: COLORS_OF). Uses Data Source проверяется в ИБ.

func numberOfItemsInComboBox() возвращает правильный результат: 5.

func comboBox() не выполняет свою работу.

Что мне не хватает?

ОТРЕДАКТИРОВАНО: Теперь работает.

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate, NSComboBoxDelegate, NSComboBoxDataSource {

@IBOutlet weak var window: NSWindow!


func applicationDidFinishLaunching(aNotification: NSNotification) {

    cbxColors.dataSource = self

    numberOfItemsInComboBoxCell(cbxColors)
    comboBoxCell(cbxColors, objectValueForItemAtIndex: 0)
}

func applicationWillTerminate(aNotification: NSNotification) {

}

@IBOutlet weak var cbxColors: NSComboBox!
@IBOutlet weak var txtResult: NSTextField!


@IBAction func actColors(sender: NSComboBox) {
    // display User selected item in 'txtResult'
}

func numberOfItemsInComboBoxCell(aComboBox: NSComboBox) -> Int {
    return(COLORS_OF.count)
}

func comboBoxCell(aComboBox: NSComboBox, objectValueForItemAtIndex index: Int) -> AnyObject {
    return(COLORS_OF[index])
}

let COLORS_OF = [ "Blue", "Green", "Purple", "Red", "Yellow" ]
} 

person San Lewy    schedule 06.10.2015    source источник
comment
Что вы имеете в виду, говоря, что не выполняете свою работу? Правильно ли подключен ваш IBoutlet cbxColors, а не ноль? Почему у вас есть NSTextFieldCell IBoutlet вместо NSTextField?   -  person Marek H    schedule 06.10.2015
comment
@ xhruso00 cbxColors IBOutlet правильно подключен к ComboBox в IB. Я изменил NSTextFieldCell! как было предложено. Я говорю, что не выполняет свою работу, потому что ComboBox не заполняется.   -  person San Lewy    schedule 06.10.2015


Ответы (1)


Вы, вероятно, забыли проверить «Использует источник данных», или вам нужно удалить соединение с источником данных и снова подключить его (странная ошибка Xcode).

введите здесь описание изображения

Кроме того, если ваши розетки правильно подключены, ваш код работает.

введите здесь описание изображения

person Marek H    schedule 06.10.2015
comment
Как я уже сказал, отмечен флажок «Использует источник данных». - person San Lewy; 06.10.2015
comment
Ваш код останавливается на точках останова (numberOfItems?) Какую OS X вы используете? Можете ли вы прикрепить пример проекта (работает для меня из коробки, поэтому я проверю, в порядке ли ваш проект). - person Marek H; 06.10.2015
comment
Теперь пример работает. Я добавил это утверждение: cbxColors.dataSource = self и добавил «Cell» к двум функциям и вызовам. - person San Lewy; 06.10.2015
comment
Это означает, что у вас не подключены все розетки; а именно источник данных;) Иногда в Xcode возникает ошибка, поэтому вам нужно удалить соединение и снова подключиться. - person Marek H; 06.10.2015
comment
Да, это было так. Когда я удалил и повторно подключил источник данных, мне не понадобился код, который я добавил — он работал так, как я думал. Если вы хотите опубликовать свой комментарий в качестве ответа, я был бы рад принять его. Спасибо. - person San Lewy; 06.10.2015
comment
Обновил ответ. Надеюсь, это поможет другим - person Marek H; 06.10.2015