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