Мой подход заключается в использовании / создании различных подклассов UIViewController для каждого из 2 видов представления. Довольно часто они могут иметь общий суперкласс. Вот пример:
@interface CMDetailsViewController : UIViewController
@end
@interface CMDetailsSinglePageViewController : CMDetailsViewController
@end
@interface CMDetailsPopoverViewController : CMDetailsViewController
@end
Каждый из этих 2 классов может настраивать некоторые поведения, определенные в вашем базовом классе. В вашем случае это будет логика представления, которая, я думаю, находится в одном из методов внешнего вида (например, -(void)viewWillAppear:(BOOL)animated
или альтернативный) или -(void)viewDidLoad
.
Поскольку вы определенно знаете способ представления контроллера представления: с помощью, скажем, UINavigationController
(на iPhone) или UIPopoverController
(на iPad), вы можете решить, какой из этих 2 подклассов создать .
В целом, это мой подход по умолчанию, даже когда я работаю с универсальным приложением для iOS. Система позволяет вам определить 2 различных UIApplicationDelegates
для каждой платформы, что означает, что вы можете использовать соответствующий UIViewControllers
, не имея тонны if-else для проверки устройства, на котором было запущено приложение.