Трудно точно сказать, что вы описываете, основываясь на вашем описании, но давайте посмотрим, понимаю ли я вас. Вы хотите добавить «копию» вашей пользовательской сборки представления в разделенное представление каждый раз, когда нажимается «+», верно?
Абсолютно лучший способ сделать это — поместить пользовательскую сборку представления, которая будет скопирована («прототип») в свой собственный xib. Для каждого объекта, который вы хотите представить, вы создадите новую копию из xib и передадите ее какому-либо владельцу, а затем добавите ее в какое-то родительское представление (разделенное представление в вашем случае... нечетно для неограниченного количества представлений, но я не хватает подробностей, чтобы сказать обратное).
Так. В современном мире Cocoa такая сборка представления, скорее всего, должна иметь собственный контроллер представления (NSViewController). Это упрощает вам задачу, поскольку владельцем файла xib будет экземпляр вашего MyCustomViewController, чей -view связан с основным представлением контейнера в xib (ваше пользовательское представление со всеми его подпредставлениями) и чей -representedObject установлен на любую модель объект, который представляет ваш пользовательский вид. Затем ваше приложение будет поддерживать список (возможно, массив или словарь) всех контроллеров представления для объектов модели. См. этот SO-вопрос/ответ для краткого изложения того, как загружать из nibs/xibs.
Это в основном то, как NSCollectionView работает (хотя все представления должны быть одинакового размера - это может не сработать для вас). В этом случае представление коллекции соответствует вашему разделенному представлению; NSCollectionViewItem соответствует вашему MyCustomViewController (и фактически в 10.5 и выше NSCollectionViewItem является подклассом NSViewController); ваш пользовательский вид - это основной вид элемента представления коллекции. Для каждого объекта модели в своей коллекции он создает экземпляр NSCollectionViewItem и загружает прототип представления из xib (в идеале, но это необязательно) и использует его для установки представления элемента, затем устанавливает представленный объект элемента (объект модели) .
Надеюсь, это немного проясняет ситуацию. Вам нужно кое-что прочитать, чтобы понять достаточное количество гаек и болтов, но если вы все еще застряли, вы можете попробовать отредактировать свой вопрос, чтобы уточнить или открыть новый, более конкретный вопрос.
person
Joshua Nozzi
schedule
01.11.2011