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