将单独的iPhone和iPad项目转换为通用项目

时间:2012-03-15 18:44:27

标签: iphone ios xcode ipad universal

我有两个完整的项目。一部适用于iPhone,另一部适用于iPad。我想将它们合并到通用应用程序中。

到目前为止,我唯一的解决方案是使用'_iPhone'和'_iPad'后缀重命名app类,并更改对代码中所有引用的所有引用。然后我可以合并AppDelegates并在启动时加载正确的控制器。

这是两个非常大的项目,因此这种方法非常耗时。有没有人有更好的解决方案?

2 个答案:

答案 0 :(得分:2)

你起草的解决方案似乎是我所知道的唯一选择 - 很想知道其他答案。

但有一件事;你实际上可以保留两个独立的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;
}

但在大多数情况下,我建议重新考虑这样的解决方案 - 通常这会导致不一致和/或代码复制。不过,我想我应该指出这个选项。

答案 1 :(得分:2)

据我所知,唯一的解决方案是创建一个新的通用项目并将文件放在那里..因为iPhone和iPad之间有很多共享代码,你可以查看设备的用途是什么通过检查UI_USER_INTERFACE_IDIOM()UIUserInterfaceIdiomPad还是UIUserInterfaceIdiomPhone来运行您的应用程序,并重命名以简单方法来突出显示类名并选择重构>重命名和xCode会在你使用它的每个地方重新命名类名。