Подтвердить что ты не робот

UIView вне контроллера просмотра в раскадровке

Я застрял в вопросе, на который я не могу найти ответ в официальной документации, в Stackoverflow или в Google.

Я опытный разработчик iOS, но новый для раскадровки. Я хотел бы создать представление о текущем контроллере представлений, представление, которое в NIB я бы сделал за пределами viewController и подключил выход, чтобы ссылаться на него в коде, и вызывать что-то вроде addSubview: или так. Полезно нарисовать оверлей или, в моем текущем случае, представление выносок для использования в делегате MapView. Но я не могу понять, как я могу это сделать в Раскадке.

Кажется, у меня нет представления за пределами диспетчера view, а представления внутри диспетчера представлений либо должны быть вложенными в представление контроллера, либо вообще не видны в Interface Builder (это нормально, когда вы перетаскиваете вид, составленный снаружи, в традиционном NIB, но довольно проблема, если вам нужно настроить хотя бы мельчайшие детали).

Любой намек на то, что делать или где искать? Благодарю.

4b9b3361

Ответ 1

Кажется, что нет никакого способа сделать это. См. комментарий Джейсона и этот вопрос, рассматривающий ту же проблему, хотя и в другом контексте.

Однако, я понял ранее, когда думал о последствиях моей проблемы, - как я начал объяснять в моем предыдущем комментарии, прежде чем решить, что это будет стоить полного ответа - имеет смысл отделить дизайн пользовательского представления от дизайна потока приложений. Таким образом, тот факт, что невозможно создавать пользовательские представления в раскадровки, вполне может быть... по дизайну.

Пользовательский вид (который является компонентом многократного использования) очень отличается от контроллера вида (который представляет собой сцену в раскадровке вашего приложения). Это то же самое, что характер и сцена, в фильме. Вы не хотите создавать свой персонаж в своей сцене, даже если вы используете этот символ только в одной сцене. Это случайно, если вы используете его только в одной сцене, но не обязательно. Поэтому он должен быть отдельным.

Тот факт, что вы хотите использовать Interface Builder для создания своего пользовательского представления, - это деталь реализации, которая должна быть инкапсулирована в ваш класс. В раскадровке приложений нет необходимости знать, даже меньше управлять, как вы справляетесь с конкретной реализацией своего многоразового представления.

Хммм, мне жаль, что у меня не было больше этой марки опроса:)

Ответ 2

Вы можете использовать Container View, как обычный просмотр (вы можете назначить IBOutlet UIView), но вы можете определить его вне вашего UIViewController.

The "container view" is outside the view, but i can assign it to a IBOutlet UIViewYou can design it

Ответ 3

Мне тоже было интересно то же самое, и на самом деле я смог добиться этого, хотя после беспорядка его ушло. У меня есть Nav Controller, View Controller и два представления. Я разработал представления в отдельном наконечнике и импортировал их в этот проект. Пока была связь кнопок, вид, над которым я работал, неожиданно появился рядом с моим контроллером просмотра. К сожалению, пытаясь показать другое представление, я как-то потерял его и не знаю, как его вернуть. Кажется, вы не можете перетащить взгляд на раскадровку, только в контроллер вида. Однако, если бы я смог сделать это один раз, его нужно было воспроизвести.