Помещение виджета / представления в отдельный файл .xib работает и уместно, особенно если вы хотите ссылаться на одно и то же представление из нескольких контроллеров представления.
Однако иногда вы хотите увидеть дополнительный вид / виджет в той же раскадровке, и это возможно. Вот как вы это делаете:
Выберите контроллер представления в IB (нажмите на черную полосу под представлением), затем перетащите UIView из библиотеки объектов на черную полосу:
Когда представление находится на черной полосе, оно создается как любой другой вид в IB, но просто не добавляется в иерархию ваших представлений, пока вы не сделаете это в коде. При необходимости измените класс представления так, чтобы он соответствовал вашему собственному подклассу:
Вы можете подключить его к контроллеру представления так же, как подключили бы любое другое представление:
Добавленный вид отображается в вашей структуре документа, и вы также можете подключить действия и ссылки:
Теперь, проблема, которая остается, заключается в том, что вы фактически не можете видеть представление независимо от того, сколько раз вы пытаетесь щелкнуть или дважды щелкнуть мышью, что лишило бы смысла помещать его в одну раскадровку. К счастью, есть два обходных пути, о которых я знаю.
Первый обходной путь - перетащить вид из черной полосы обратно в вид контроллера вашего представления, отредактировать его, а затем перетащить его обратно в черную полосу, как только вы закончите. Это хлопотно, но надежно.
Другой обходной путь более привередливый, но я предпочитаю его, потому что он позволяет мне видеть все мои взгляды одновременно:
- Перетащите UITableView из библиотеки объектов в недавно добавленное представление.
Затем перетащите UITableViewCell в этот UITableView.
Как только вы это сделаете, ваше представление волшебным образом появится рядом, но у вас будет UITableView, который вам не нужен. Вы можете либо изменить его размер до 0x0, либо удалить его, и ваш UIView будет (обычно) все еще оставаться видимым.
- Иногда вторичный вид снова становится скрытым в IB. Вы можете повторить описанные выше шаги, если вы удалили UITableView или UITableView все еще находится в иерархии, вам просто нужно нажать на UITableViewCell, и представление появится снова.
Второй метод работает для UIViews, но не очень хорошо для UIToolbars и невозможен для UIButtons, поэтому самое чистое решение, которое я нашел, когда вам нужно включить множество различных подпредставлений, - это присоединить один вторичный UIView к вашему контроллеру представления как контейнер, который никогда не показывается, поместите туда все ваши вторичные представления и используйте трюк UITableViewCell, чтобы сделать все видимым. Я изменяю размер моего фиктивного UITableView до 0x0, чтобы сделать его невидимым. Вот скриншот того, как все это выглядит вместе: