Недавно я написал приложение с одной сценой и ViewController
.Мне пришлось установить пользовательское фоновое изображение для View
, которым управляет ViewController
(т.е. мой вид сверху содержал UIImageView
).Позже мне пришлось реализовать некоторую логику в ViewController
, чтобы она правильно вращала / изменяла изображение при повороте экрана.Также мне пришлось переписать некоторые свойства, такие как preferredStatusBarStyle
для ViewController
.
Теперь мне нужно реализовать еще пару сцен / экранов в моем приложении, и получается, что все они должны иметь одинаковый дизайн сэто текущий экран, так что я думаю, что имеет смысл, если я создам CommonViewController
, который содержит эту общую логику, связанную с вращением, для фонового изображения, чтобы я мог наследовать все остальные ViewController
от этого CommonViewController
.Единственная проблема, с которой я сталкиваюсь, заключается в том, что CommonViewController
«требует», чтобы управляемое представление имело свойство backgroundPicture: UIView
, которое я не знаю, как обеспечить.
Если я создаю новый файл CommonViewController
вместе с XIB-файлом я могу добавить представление backgroundPicture
изображения в XIB и связать его с кодом (с помощью обычного подхода «control-drag»), но, очевидно, это не будет работать, поскольку нет гарантии, что представления, которыенаследовать CommonViewController
будет иметь это свойство.Как правильно решить эту проблему без взломов на iOS в Swift?
К сожалению, я не смог найти решение, возможно, я искал что-то не так.Кажется, что мне как-то нужно унаследовать CommonViewController
для каждой сцены (для каждой CustomViewController
), но я также должен каким-то образом установить вид сверху каждого из этих контроллеров так, чтобы он равнялся некоторым CommonView
, чтобы CommonViewController
не падает, когда я пытаюсь получить доступ к @IBOutlet weak var backgroundPicutre: UIImageView!
.
Очевидным способом было бы определить некоторый метод или свойство в CommonViewController
, чтобы контроллеры, которые его наследовали, могли реализовать/ переопределить его, но это кажется немного хакерским, поскольку он все еще требует вставки копии в каждый ViewController
, который наследует CommonViewController
.
Как я представлял себе решение: я создаю CustomViewController: CommonViewController
, затем я создаюпросмотрите контроллер в моей раскадровке и измените свойство «Class» на «CustomViewController» (в редакторе свойств), затем я выбираю представление, соответствующее этому вновь добавленному контроллеру, и изменяю свойство «Class» на «BackgroundImageView . But I'm not sure if it's the correct way to do (also I doubt that
CustomViewController * 1037».* IBOutlet field
bakcgroundImageView with the corresponding
UIView from
BackgroundImageView`, поэтому я хотел спросить экспертов, что они об этом думают.