У меня есть массив объектов, назовите их объектами I1. Каждый объект I1 содержит массив объектов I2.
ArrayController1 управляет объектами типа I1, отображаемыми в TableView T1.
ArrayController2 управляет объектами типа I2, отображаемыми в TableView T2.
Я использую метод делегата selectionDidChange из ArrayController1, чтобы определить, какие объекты отображаются в T2.
Я добавляю и удаляю элементы I1 с помощью добавления (или добавления объекта) и удаляю вызовы ArrayController1 из моего контроллера модели.
Все работает нормально, за исключением, когда я удаляю элемент из середины списка T1, моему делегату не отправляется сообщение selectionDidChange, поэтому содержимое старого (удаленного) I1 по-прежнему отображается в T2 .
Я подозреваю, что это как-то связано с тем фактом, что «удаление» откладывается до следующей итерации цикла выполнения.
Я не вижу простого способа зарегистрировать изменение выбора при удалении. Я мог бы, я полагаю, посмотреть индексы выбора и сбросить содержимое T2 "вручную", так сказать.
Любые предложения будут оценены.