Вопрос

В моей настройке у меня есть NSCollectionView томов, подключенных к Mac.Для представления NSCollectionViewItem у меня есть NSBox с NSTableView внутри, в котором перечислено содержимое этого тома.

Моя проблема возникает при попытке добавить/удалить элементы в NSTableView.Кажется, что NSBox инициализируется один раз, поэтому существует только один NSTableView.Это означает, что когда я хочу обновить данные внутри NSTableView, я не могу вызвать reloadData в IBOutlet и обновить все таблицы.

Если я создаю IBOutlet в подклассе NSBox, для экземпляра он равен нулю, поэтому я не могу вызвать его через него.

Ближе всего я подошел к заключению @try @catch вокруг кода, который возвращает объект в строке в столбце, возникает исключение, потому что этот элемент больше не существует, поэтому я могу захватить tableView и вызвать reloadData, что, похоже, обновите этот конкретный NSTableView.

Проблема заключается в том, что если удаленный элемент находится в конце таблицы или если элемент добавлен, исключение не возникнет, поскольку оно может видеть все существующие элементы.

Был ли у кого-нибудь опыт работы с NSTableView в представлении NSCollectionViewItem?Как вы обновляли таблицы?

Это было полезно?

Решение

Поместите NSBox (с его NSTableView) в отдельный перо.Каждый раз, когда вы создаете новый элемент представления коллекции, загружайте перо, устанавливайте этот NSBox в качестве представления элемента представления коллекции и отпускайте NSBox.

Что касается представления табличных представлений, то, вероятно, самый простой способ — это привязки.Привяжите каждый столбец табличного представления к другому свойству объекта модели, который представляет элемент представления коллекции.Конечно, вы, вероятно, захотите использовать контроллер массива, что означает наличие одного из них для каждого элемента представления коллекции и добавление их в массив, который вы выпустите позже. dealloc.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top