Имейте NSComboBox для обновления, когда его связанный NSMutableArray обновляется

Скажем, у меня есть окно с двумя выпадающими списками. NSWindowController, управляющий окном, имеет два изменяемых массива, привязанных к полям со списком Content Values.

Я бы хотел, чтобы первое поле со списком имело фиксированные значения, а второе значение со списком зависело от первого выбранного значения со списком.

Что мне делать, чтобы второе поле со списком перезагружало его содержимое при обновлении связанного изменяемого массива (или как мне обновить массив, чтобы это произошло?)?


person Pinco Pallino    schedule 20.06.2012    source источник


Ответы (1)


Если вы устанавливаете значение второго массива с помощью его обычных методов доступа, правильные сообщения об обновлении должны распространяться на все связанные значения и другие слушатели.

// When first combo box changes value
// NSArray *newArray = // Fancy algorithm..
self.secondArray = newArray;

Это должно обновить второе поле со списком.

Если вы не хотите изменять экземпляр NSMutableArray, поддерживающий ваше свойство, вы можете использовать изменяемые методы доступа, описанные здесь. Они позволят вам изменить содержимое изменяемого массива без изменения самого массива. И система KVC/KVO распространит изменения среди слушателей.

person Monolo    schedule 20.06.2012