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