Удаление NSArrayController: не приводит к selectionDidChange

У меня есть массив объектов, назовите их объектами I1. Каждый объект I1 содержит массив объектов I2.

ArrayController1 управляет объектами типа I1, отображаемыми в TableView T1.

ArrayController2 управляет объектами типа I2, отображаемыми в TableView T2.

Я использую метод делегата selectionDidChange из ArrayController1, чтобы определить, какие объекты отображаются в T2.

Я добавляю и удаляю элементы I1 с помощью добавления (или добавления объекта) и удаляю вызовы ArrayController1 из моего контроллера модели.

Все работает нормально, за исключением, когда я удаляю элемент из середины списка T1, моему делегату не отправляется сообщение selectionDidChange, поэтому содержимое старого (удаленного) I1 по-прежнему отображается в T2 .

Я подозреваю, что это как-то связано с тем фактом, что «удаление» откладывается до следующей итерации цикла выполнения.

Я не вижу простого способа зарегистрировать изменение выбора при удалении. Я мог бы, я полагаю, посмотреть индексы выбора и сбросить содержимое T2 "вручную", так сказать.

Любые предложения будут оценены.


person John Velman    schedule 16.02.2011    source источник


Ответы (1)


Ну 5 просмотров, мои поиски, нет ответов как это сделать автоматически. (сообщение selectionDidChange делегату автоматически при добавлении объекта, но не при удалении, видимо).

Мое решение состоит в том, чтобы установить индекс выбора вручную при обработке действия удаления. set selection index действительно вызывает отправку делегату сообщения didChange.

person John Velman    schedule 16.02.2011