Преобразование целевого приложения для iPhone в универсальное в Xcode

У меня есть проект, который изначально задумывался как приложение для iPhone, но теперь я хочу, чтобы он также поддерживал iPad. Я изменил цель проекта с iPhone на Universal, но я не знаю, как управлять обеими версиями пера, которые мне нужны сейчас, поскольку у меня уже есть пера, разработанные для iPhone. Я попытался загрузить одни и те же viewControllers с разными перьями в зависимости от устройства, но мне не разрешено устанавливать более одного элемента управления интерфейсом для одних и тех же выходов. Любая помощь? У меня Xcode 4.4.


person AppsDev    schedule 20.11.2012    source источник
comment
Что вы подразумеваете под этим Im not allowed to set more than one interface control to the same outlets?   -  person CAMOBAP    schedule 20.11.2012
comment
Этот IBOutlet, объявленный в .h, может быть связан только один раз...   -  person AppsDev    schedule 20.11.2012


Ответы (3)


Это довольно легко. Для файлов раскадровки просто включите суффиксы _iPad и _iPhone. Например, если исходное имя раскадровки MyStoryboard.storyboard, теперь у вас будут MyStoryboard_iPad.storyboard и MyStoryboard_iPhone.storyboard. Вы также можете установить файл раскадровки для каждого устройства в сводном представлении проекта.

Затем для файлов .xib включите суффиксы ~iPhone и ~iPad. ViewController.xib становится ViewController~iPad.xib и ViewController~iPhone.xib

Для начала вы можете просто создать дубликат существующих файлов .xib и переименовать их, чтобы они имели суффиксы iPad и iPhone. Затем измените содержимое каждого .xib по мере необходимости.

Что касается кода .m, вы можете проверить тип устройства и разветвить свой код. Мой подход заключается в определении макросов, которые идентифицируют тип устройства, например:

#define isDeviceIPad (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
#define isDeviceIPhone (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone)

Затем я просто использую эти макросы (которые возвращают логические значения) для написания кода, специфичного для типа устройства (например, для размещения или размеров определенного вида и т. д.).

person Vinod Vishwanath    schedule 20.11.2012
comment
Спасибо! Что, если мне также потребуется внести некоторые изменения в файлы .m ViewController? Я бы также добавил суффиксы iPhone/iPad? - person AppsDev; 20.11.2012
comment
Пожалуйста. Файл .m один и не меняется в зависимости от типа устройства. Я отредактировал свой ответ, чтобы изменить выполнение кода .m в зависимости от типа устройства. Надеюсь, это поможет. - person Vinod Vishwanath; 21.11.2012

Вы можете изменить только целевое устройство как iPhone / iPad, и вы можете использовать .xib файл iPad:

  if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
    //For navigate to iphone view 
}
else{
     //For navigate to ipad view
}

Справочник

person Rushabh    schedule 20.11.2012

Добавьте еще 1 XiB, предназначенный для iPad, в каждый файл и во время навигации выберите Xib после проверки типа устройства с кодом, показанным выше.

person DD_    schedule 20.11.2012