Как привязать пользовательское представление nib к подклассу NSVIew - PullRequest
1 голос
/ 01 ноября 2011

У меня есть простое требование. При нажатии кнопки + я пытаюсь добавить пользовательский вид к SplitView.

Я создал класс MyCustomView, который является подклассом NSView

В файле пера приложений у меня есть пользовательский вид, который содержит кнопки и т. Д.

Теперь Как каждый раз назначать новый MyCustomView?

Есть ли пример для этого?

Я надеюсь, что-то вроде

MyCustomView *v1 = [[MyCustomView alloc] init];

..
..
[splitView addSubView:v1];
[splitView addSubView:v2];

...

Пожалуйста, помогите

1 Ответ

3 голосов
/ 01 ноября 2011

Трудно сказать точно, что вы описываете, основываясь на вашем описании, но давайте посмотрим, понимаю ли я вас. Вы хотите добавить «копию» вашей сборки пользовательского вида в разделенный вид каждый раз, когда нажимаете «+», верно?

Абсолютно лучший способ сделать это - поместить сборку пользовательского представления, которая будет скопирована («прототип»), в свою собственную XIB. Для каждого объекта, который вы хотите представить, вы создадите новую копию из xib и передадите ее какому-либо владельцу, а затем добавите ее в какое-либо родительское представление (разделенное представление в вашем случае ... странное для неограниченного количества просмотров, но я не хватает деталей, чтобы сказать иначе).

Итак. В современном мире Какао такая сборка представления, вероятно, должна иметь свой собственный контроллер представления ( NSViewController ). Это упростит вам задачу, поскольку владелец файла xib будет экземпляром вашего MyCustomViewController, чье -view связано с главным представлением контейнера в xib (ваше пользовательское представление со всеми его подпредставлениями), а для которого -representedObject установлена ​​любая модель объект, который представляет ваш пользовательский вид. Затем ваше приложение будет поддерживать список (возможно, массив или словарь) всех контроллеров представления для объектов модели. См. этот SO вопрос / ответ , чтобы узнать, как загружать файлы из nibs / xibs.

Это в основном то, как NSCollectionView работает (хотя все представления должны быть одинакового размера - может не работать у вас). В этом случае представление коллекции соответствует вашему разделенному представлению; NSCollectionViewItem соответствует вашему MyCustomViewController (и фактически на 10.5 и выше NSCollectionViewItem является подклассом NSViewController); Ваш пользовательский вид - это основной вид элемента коллекции. Для каждого объекта модели в своей коллекции он создает экземпляр NSCollectionViewItem и загружает прототип представления из xib (в идеале, но это необязательно) и использует его для установки представления элемента, а затем устанавливает представленный объект элемента (объект модели) .

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

...