У меня есть один UIViewController, который управляет портретным представлением и некоторой логикой приложения. Однако мне нужно настроить другой вид для альбомной ориентации. Виджеты между двумя представлениями в основном одинаковы, но их расположение очень отличается.
Моей первой попыткой было использование одного UIViewController и одного связанного XIB. В XIB у меня есть два UIView, LandscapeView для ландшафта и PortraitView для портрета.
myController.xib
| myController (Владелец файла)
| LandscapeView
| - myWidget
| - ...
| PortraitView
| - myWidget
| - ...
Затем myController переключается между этими видами в зависимости от ориентации экрана, устанавливая его свойство view.
В моем примере myWidget, по сути, одинаков между двумя представлениями, только изменение их положения. Контроллер имеет IBOutlet для одного из них, и этот IBOutlet изменяется программно, когда происходит изменение ориентации, чтобы указывать на правильный.
Есть ли лучшее решение?
Я проверил пример кода AlternateViews от Apple, но они используют 2 UIViewController для 2 разных представлений. Я хотел бы хранить весь код обработки событий / делегатов только в одном контроллере, а не разбивать его на 2 контроллера.