Кажется, что здесь, как правило, много путаницы, в основном проявляющейся в вашем последнем
(4) строка (и) кода. Вам известно, что символ ':' используется для передачи аргументов в методы, а не для завершения строки? Вы, по сути, маргаритка, соединяющая эти последние 4 строки вместе, что не имеет смысла. Что касается конкретных предупреждений, getStringzFromTxtz - это метод, который вы определили в AwesomeBoxList, а не метод NSComboBox. numberOfItemsInComboBox: и comboBox: objectValueForItemAtIndex: являются NSComboBoxDataSource Protocol методами, предназначенными для реализации вашим классом от имени NSComboBox, а не NSComboBox. Я бы порекомендовал немного почитать делегатов и протоколы.
Для уточнения:
Чтобы ваш класс AwesomeBoxList использовал NSComboBox, он должен предоставить информацию в поле со списком, который должен знать поле со списком. В Apple Universe подобные ситуации обычно обрабатываются с помощью Шаблон проектирования делегатов . В частности, поле со списком должно знать , сколько элементов оно будет отображать , а также представление объекта для каждого из показанных элементов . Поле со списком объявляет интерфейс для этого в NSComboBoxDataSource Protocol . Предоставляя эту информацию, вы действуете как источник данных для поля со списком. Вы можете указать в поле со списком, что он должен отнести ваш класс к своим данным, установив себя в качестве его свойства dataSource в Интерфейсном Разработчике или вызвав
[ComboBoz setDataSource:self];
откуда-то в реализации вашего AwesomeBoxList. Это гарантирует, что поле со списком вызывает методы в вашем классе, чтобы заполнить себя информацией. Есть два метода, которые конкретно должен реализовывать ваш класс AwesomeBoxList и которые будут вызываться комбинированным окном:
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index {
switch (index) {
// Return some object that is represented by index in the combo box
}
}
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox {
// return theNumberOfItemsInYourComboBox;
}
Обеспечение осмысленной реализации - это все, что вам нужно сделать, чтобы заполнить поле со списком данными. Я не знаю специфики того, что вы хотите здесь, но это шаблон, которому вы хотите следовать. Надеюсь, это поможет немного больше.