Могу ли я установить два разных xib для одного и того же UIVIewController для iOS6 и iOS7?

Могу ли я установить два разных xib для iOS6 и iOS7?

Я не могу внести одинаковые изменения в один и тот же файл xib для обеих iOS, и я не могу установить все в коде.

спасибо


person aneuryzm    schedule 01.08.2013    source источник


Ответы (2)


Да, вы можете просто использовать [[UIDevice currentDevice] systemVersion], как указано в принятом ответе на этот вопрос: Как проверить версию iOS?

Получите версию и соответственно загрузите правильный XIB.

person Can Poyrazoğlu    schedule 01.08.2013
comment
А как насчет тех UIViewController, которые явно не загружают имя файла xib в код, а просто связываются с файлом xib с помощью построителя интерфейса? Именно так я загружаю xib-файлы, я не писал для этого никакого кода. - person aneuryzm; 02.08.2013
comment
одним из способов может быть создание двух разных классов и двух разных контроллеров представления, полиморфный дизайн со всеми общими частями, унаследованными от базового контроллера представления, что не должно быть большой работой. другой вариант, если вы используете раскадровки, может иметь два разных перехода и условно вызывать один из них в зависимости от версии. - person Can Poyrazoğlu; 02.08.2013
comment
Хорошо, последний вопрос: нет ли способа указать в файле xib, к какой iOS он принадлежит? Так он не будет загружаться ни с одной iOS, ни с другой? - person aneuryzm; 06.08.2013
comment
насколько я знаю, такого способа нет. единственная известная мне разница для указания разных устройств - это разница между iphone (ipod) и ipad, и это также касается раскадровок, а не xibs. - person Can Poyrazoğlu; 07.08.2013

Предлагаемый Apple метод проверки версии на iOS — это тот, о котором также сообщается в руководстве по переходу на ios7:

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
   // Load resources for iOS 6.1 or earlier
} else {
   // Load resources for iOS 7 or later
}

Как видите, здесь

person Andrea    schedule 13.12.2013