如何将我的iPhone应用程序变成通用应用程序(iPhone和iPad兼容)?

时间:2011-12-23 08:44:42

标签: iphone ipad ios-universal-app

我一直在寻找有关如何制作iPhone应用程序的教程,以便它可以在iPad上运行。然而,当我试图实现这一点时,我已经变得有点卡住,因为Xcode已经改变了相当多的数量并且教程似乎已经过时了。到目前为止,我已经完成了以下工作:

我更新了要设置为通用的设备:

enter image description here

我还更新了我的app委托类:

// Set up tab 1
TabOne_ViewController *tabOne = [TabOne_ViewController alloc];
UIViewController *tabOneViewController;

// Set up tab 2
TabTwo_ViewController *tabTwo = [TabTwo_ViewController alloc];
UIViewController *tabTwoViewController;

// Determine which UI to load for each tab
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    tabOneViewController = [tabOne initWithNibName:@"TabOne_ViewController" bundle:nil];
    tabTwoViewController = [tabTwo initWithNibName:@"TabTwo_ViewController" bundle:nil];
}
else
{  
    tabOneViewController = [tabOne initWithNibName:@"TabOne_ViewController(iPad)" bundle:nil];
    tabTwoViewController = [tabTwo initWithNibName:@"TabTwo_ViewController(iPad)" bundle:nil];
}

我还创建了两个额外的.xib文件:

  • TabOne_ViewController总览的.xib
  • TabTwo_ViewController总览的.xib

最后,我尝试将TabOne_ViewController(iPad).xib上的课程设为TabOne_ViewController.h& TabOne_ViewController.m。而且TabTwo_ViewController(iPad).xib也是TabTwo_ViewController.h& TabTwo_ViewController.m。但是我无法这样做。

我在某处出错了吗?我错过了额外的步骤吗?

修改

当我指的是无法选择我在IB中所说的类时:

enter image description here

无法将类链接到.xib文件,我无法链接所有IBOutlet& IBActions。

2 个答案:

答案 0 :(得分:1)

你去目标点击项目,总结一下:       设备:“通用”

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
tabOneViewController = [tabOne initWithNibName:@"TabOne_ViewController" bundle:nil];
tabTwoViewController = [tabTwo initWithNibName:@"TabTwo_ViewController" bundle:nil];
}
else
{  
tabOneViewController = [tabOne initWithNibName:@"TabOne_ViewController(iPad)" bundle:nil];
tabTwoViewController = [tabTwo initWithNibName:@"TabTwo_ViewController(iPad)" bundle:nil];
}

您可以按以下方式尝试此代码,而不是此代码:

 UIDevice* thisDevice = [UIDevice currentDevice];
if(thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)
{
    // iPad
    tabOneViewController = [tabOne initWithNibName:@"TabOne_ViewController(iPad)" bundle:nil];
tabTwoViewController = [tabTwo initWithNibName:@"TabTwo_ViewController(iPad)" bundle:nil];

}
else
{
    // iPhone
    tabOneViewController = [tabOne initWithNibName:@"TabOne_ViewController" bundle:nil];
tabTwoViewController = [tabTwo initWithNibName:@"TabTwo_ViewController" bundle:nil];
}

答案 1 :(得分:1)

在xib中,您尝试更改View的类。但是你必须改变File's Owner

的类