我有两个完整的项目。一部适用于iPhone,另一部适用于iPad。我想将它们合并到通用应用程序中。
到目前为止,我唯一的解决方案是使用'_iPhone'和'_iPad'后缀重命名app类,并更改对代码中所有引用的所有引用。然后我可以合并AppDelegates并在启动时加载正确的控制器。
这是两个非常大的项目,因此这种方法非常耗时。有没有人有更好的解决方案?
答案 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会在你使用它的每个地方重新命名类名。