NSArrayController удалить: не приводит к "selectionDidChange" - PullRequest
3 голосов
/ 16 февраля 2011

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

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 16 февраля 2011

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

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

...