2012-07-10 49 views
0

我有一个适用于iPad和iPhone的通用iOS应用程序。我创建了一个带有xib和iPad的课程。我现在如何为iPhone设计它?为iPhone创建另一个xib?如果是这样的话,我会告诉应用程序如何在需要时为iPhone加载xib,因为现在它会加载iPad xib,并且一切都太大了。 在此先感谢XCode通用应用程序

回答

1

那么,您的视图控制器有一个名为initWithNibName: bundle:的方法。 这样做:

MyController *controller = [[MyController alloc] initWithNibName:[NSString stringWithFormat:@"myController_%@",deviceName] bundle:nil]; 

编辑:你必须做出2个xibs,对不对?将它们命名为Settings_iPhone.xib和Settings_iPad.xib。当你要显示设置屏幕,继续申报

NSString *deviceName = ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) ? @"iPhone" : @"iPad";

之后:

Settings *controller = [[Settings alloc] initWithNibName:[NSString stringWithFormat:@"Settings_%@",deviceName] bundle:nil]; 
+0

我不需要的设备名称,如果我在厦门国际银行文件类型名称自己的权利?它告诉我没有可见的@interface'Settings'声明选择器'initWithNibName' – oybcs 2012-07-10 10:19:02

+1

请参阅我编辑的答案 – George 2012-07-10 10:23:07

+0

谢谢,以及我如何将新的笔尖连接到Settings类? – oybcs 2012-07-10 10:30:46

1

是的,你需要两个笔尖文件。您可以使用initWithNibName并通过使用以下代码检测设备类型来指定笔尖的名称。

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 

这将允许你在不同的设备

+0

我做这样说:如果 (UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPad) 但是当我这样做: 设置* settingsViewController = [[设置页头] initWithNibName:[的NSString stringWithFormat:@ “设置 - iPhone” 捆绑:零]]; 它告诉我'设置'没有可见的@interface声明选择器'initWithNibName' – oybcs 2012-07-10 10:16:44

1

当我需要做这样的应用,我做了2 XIB文件,一个为iPad,一个用于iPhone区别开来。第一个是使用视图控制器创建的。第二个是通过添加接口文件创建的。我试图让meaningfull的名称(如:ListNameVC.xib和ListNameVC_iPad.xib

在第二次厦门国际银行,你需要做两件事情

  • 文件的所有者类必须指向正确的VC类
  • 您必须在对象与文件的所有者认为出口链接视图(否则你会崩溃上执行)。

有了这些,你可以创建你的视图控制器的正确的厦门国际银行,基于呼叫在设备上:

ListeNameVC* listeNameVC 

if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad){ 
    listeNameVC = [[ListeNameVC alloc] initWithNibName:@"ListeNameVC_iPad" bundle:nil]; 
} else { 
    listeNameVC = [[ListeNameVC alloc] initWithNibName:@"ListeNameVC" bundle:nil]; 
} 

如果您需要在iPhone或iPad上以不同的方式执行操作,则可以在视图控制器中使用UI_USER_INTERFACE_IDIOM。例如,如果你把一个UIButton编程,或者如果你的iPhone设置图像的名称和另一个用于iPad的

CDT

+0

谢谢你,它的作品像一个魅力:) – oybcs 2012-07-10 10:46:08

相关问题