如何制作iPhone和iPad版本的应用程序?

如何制作iPhone和iPad版本的应用程序?,iphone,objective-c,ipad,uiview,Iphone,Objective C,Ipad,Uiview,我正在尝试制作一款既能在iPhone上运行又能在iPad上运行的应用程序。我正在寻找如何使一个接口在两者上兼容。当应用程序加载时,我将显示一个表视图。如何根据设备加载不同的NIB?我用它在笔尖之间切换 if ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)]) { if ([[UIDevice currentDevice] userInterfaceIdiom] ==

我正在尝试制作一款既能在iPhone上运行又能在iPad上运行的应用程序。我正在寻找如何使一个接口在两者上兼容。当应用程序加载时,我将显示一个表视图。如何根据设备加载不同的NIB?我用它在笔尖之间切换

if ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)]) 
    {
        if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) 
        {
            device = @"iPad";
        }
        else 
        {
            device = @"iPhone";
        }

    }
但在MainWindow.xib中,它表示视图是从iPhone的视图控制器加载的。我可以基于设备进行动态设置吗?ie我想从应用程序一开始就根据设备显示不同的笔尖。
谢谢。

您也可以用类似的方式:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){
    mainMenu = [[MainMenu alloc] initWithNibName:@"MainMenuiPad" bundle:nil]; 
}else{  
    mainMenu = [[MainMenu alloc] initWithNibName:@"MainMenu" bundle:nil]; 
}

用于制作通用应用程序

1-将应用程序的“信息构建”选项卡中的目标系列设置为iPhone/iPad

2-从主窗口中删除窗口

3-添加两个xib,一个用于iPhone,一个用于iPad(通过选择iPad xib)

4-将appDelegate类作为这些xib的控制器文件

5-在这些XIB上添加窗口,查看控制器或导航控制器,并由IB检查器在此处设置加载nib名称和控制器文件,其中一个是您的第一个视图

6-然后针对具有tableview或其他控件的iPad和iPhone制作不同的xib

7-为不同的设备制作单个控制器文件或不同的控制器文件,对于相同的设备,您需要根据此if-else条件检查设备

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){
8-现在您需要在方法didFinishL中的appDelegate类中加载xib--


请在您的
Info.plist中尝试此操作:
主nib文件基本名称[
NSMainNibFile
]:主窗口\u iPhone
主nib文件基本名称(iPad)[
NSMainNibFile~iPad
]:主窗口\u iPad


我希望这对您有所帮助。

事实上,苹果会自动完成这一切,只需命名您的NIB文件:

MyViewController~iphone.xib // iPhone
MyViewController~ipad.xib // iPad
并用最少的代码加载视图控制器:

[[MyViewController alloc] initWithNibName:nil bundle:nil]; // Apple will take care of everything

谢谢你的回复。正如我所说,当我们在interface builder中打开MainWindow.xib时,它会显示“视图是从abc_iPhoneAppViewController加载的”,这是iPhone的UI。我怎样才能把它换成ipadone呢。在IB中或通过代码。你能举个详细的例子吗。谢谢你最近有人在邮件列表上留言。。。小心把箱子弄对!苹果的特殊代码是区分大小写的——如果你拼写它为“iPhone”或“iPad”,你会发现它会默默地失败,没有任何解释:(@Adam这对ios5不起作用。我用ios6试过了,效果很好。知道为什么不起作用吗?对我来说,在iOS 4+5+6中效果很好。仔细检查所有文件的大小写敏感度,然后尝试“清除”重新生成之前。还要检查是否有0个警告。
[[MyViewController alloc] initWithNibName:nil bundle:nil]; // Apple will take care of everything