在Xcode中将针对iPhone的应用程序转换为Universal

在Xcode中将针对iPhone的应用程序转换为Universal,iphone,ios,xcode,ios-universal-app,Iphone,Ios,Xcode,Ios Universal App,我有一个项目,最初打算是一个iPhone应用程序,但现在我希望它也支持iPad。我已经将项目的目标从iPhone改为Universal,但我不知道如何管理我现在需要的两个nib版本,因为已经为iPhone设计了nib。我试着根据设备的不同使用不同的NIB加载相同的ViewController,但我不允许在同一个插座上设置多个接口控件。有什么帮助吗?我有Xcode 4.4,这很简单。 对于故事板文件,只需包含\u iPad和\u iPhone后缀即可。 例如,如果原始故事板名称为MyStorybo

我有一个项目,最初打算是一个iPhone应用程序,但现在我希望它也支持iPad。我已经将项目的目标从iPhone改为Universal,但我不知道如何管理我现在需要的两个nib版本,因为已经为iPhone设计了nib。我试着根据设备的不同使用不同的NIB加载相同的ViewController,但我不允许在同一个插座上设置多个接口控件。有什么帮助吗?我有Xcode 4.4,这很简单。 对于故事板文件,只需包含
\u iPad
\u iPhone
后缀即可。 例如,如果原始故事板名称为
MyStoryboard.storyboard
,则现在将拥有
MyStoryboard\u iPad.storyboard
MyStoryboard\u 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)
然后我就使用这些宏(返回bool值)来编写特定于设备类型的代码(例如特定视图的位置或尺寸等)。

这非常简单。 对于故事板文件,只需包含
\u iPad
\u iPhone
后缀即可。 例如,如果原始故事板名称为
MyStoryboard.storyboard
,则现在将拥有
MyStoryboard\u iPad.storyboard
MyStoryboard\u 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)

然后我只需使用这些宏(返回布尔值)来编写特定于设备类型的代码(例如特定视图的位置或尺寸等)。

您只能将目标设备更改为iPhone/iPad,并且可以使用iPad的
.xib
文件:

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

您只能将目标设备更改为iPhone/iPad,并且可以使用iPad的
.xib
文件:

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

在每个文件中添加1个针对iPad的XiB,在导航过程中,使用上面显示的代码检查设备类型后选择XiB

在每个文件和导航过程中添加1个针对iPad的XiB,在使用上面显示的代码检查设备类型后选择Xib

您所说的
Im不允许将多个接口控件设置到同一个插座是什么意思
?在.h中声明的IBOutlet只能链接一次…您所说的
Im不允许将多个接口控件设置到同一个插座是什么意思outlets
?在.h中声明的IBOutlet只能链接一次…谢谢!如果我还需要对ViewController的.m文件应用一些更改,该怎么办?我还要加上iPhone/iPad后缀?不客气。.m文件是单个文件,不随设备类型而变化。我已经编辑了我的答案,以根据设备类型改变.m代码的执行。希望有帮助。谢谢!如果我还需要对ViewController的.m文件应用一些更改,该怎么办?我还要加上iPhone/iPad后缀?不客气。.m文件是单个文件,不随设备类型而变化。我已经编辑了我的答案,以根据设备类型改变.m代码的执行。希望有帮助。