Преобразование отдельных проектов iPhone и iPad в универсальный - PullRequest
2 голосов
/ 15 марта 2012

У меня есть два завершенных проекта.Один работает на iPhone, а другой на iPad.Я хочу объединить их в универсальное приложение.

Пока что единственное решение, которое у меня есть, - переименовать классы приложения с суффиксами _iPhone и _iPad и изменить все ссылки на ссылки в коде.Затем я мог бы объединить AppDelegates и загрузить правильные контроллеры при запуске.

Это два очень больших проекта, поэтому этот метод займет очень много времени.У кого-нибудь есть лучшее решение?

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Насколько мне известно, единственное решение, которое можно сделать, - это создать новый универсальный проект и поместить туда свои файлы ... поскольку между iPhone и iPad существует большой общий код, вы можете проверить, к какому устройству оно относитсязапустите ваше приложение, проверив, является ли UI_USER_INTERFACE_IDIOM() UIUserInterfaceIdiomPad или UIUserInterfaceIdiomPhone .. и для переименования самый простой способ сделать это, чтобы выделить имя класса и выбрать Refactor> Rename , и xCode позаботитсяо переименовании имени класса в каждом месте, где вы его использовали.

2 голосов
/ 15 марта 2012

Похоже, что ваше черновое решение - единственный вариант, о котором я знаю - любопытно увидеть другие ответы.

Одна вещь, хотя; вы могли бы на самом деле сохранить два отдельных AppDelegates.

В рамках основной реализации вы можете проверить устройство и запустить iPad-AppDelegate или iPhone-AppDelegate.

int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    int retVal = 0;

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        retVal = UIApplicationMain(argc, argv, nil, @"XXXAppDelegate_iPad");
    }
    else 
    {
        retVal = UIApplicationMain(argc, argv, nil, @"XXXAppDelegate_iPhone");        
    }
    [pool release];
    return retVal;
}

Однако в большинстве случаев я бы посоветовал переосмыслить такое решение - достаточно часто это приводит к несоответствиям и / или репликации кода. Тем не менее, я подумал, что должен указать на вариант.

...