Загрузить представление с файлом пера из другого файла пера - PullRequest
2 голосов
/ 27 февраля 2011

Я уверен, что это довольно просто, но я не могу заставить его работать.

У меня есть UIViewController под названием viewController, включающий в себя кончик, который должен загрузить несколько других представлений.Четыре из этих других представлений являются представлениями моего класса BlockView (подкласс UIView).Я также создал файл пера для класса BlockView (создав новое перо и установив для его владельца файла BlockView, есть ли здесь что-то еще, что нужно сделать?).В viewController я перетаскиваю четыре UIViews и устанавливаю для их владельцев «Class» значение BlockView.

Когда я запускаю это, я вижу только четыре белых квадрата, куда я помещаю BlockViews, почему это так?

Спасибо

-Майкл

Ответы [ 2 ]

0 голосов
/ 19 июля 2011

Чтобы создать экземпляр пользовательского класса и добавить его в качестве подпредставления в иерархию представлений контроллера представления:

  1. Добавьте UIView в иерархию представлений.
  2. В Identity Inspector (⌥⌘3) установите атрибут "Class" в BlockView.

Это создает экземпляр BlockView, но, конечно, он ничего не знает о BlockView.xib, в котором вы его спроектировали ...

Моя команда недавно нашла интересный способ решения этой проблемы (встраивание Nib в другие Nibs), который я написал в нашем блоге для разработчиков iOS . Суть переопределения -awakeAfterUsingCoder: в классе BlockView, заменив объект, загруженный из «родительского» пера, на объект, загруженный из «дочернего» пера (BlockView.xib).

0 голосов
/ 27 февраля 2011

Краткий ответ: в IB нет поддержки для того, что вы хотите сделать, но есть обходные пути кода, чтобы делать то, что вы хотите.

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

Чтобы сделать то, что вы хотите сделать, найдите в документе «Загрузка файлов Nib с использованием UINib и NSNib».Это покажет вам, как загрузить BlockView из BlockView.xib.

Затем вам придется использовать addSubview: в коде и установить фрейм в правильное положение.

Если вы оставите 4блоки-заполнители в IB, для удобства вы можете просто установить фрейм загруженных блочных представлений в фрейм видов-заполнителей.

...