将两个XIB连接到一个ViewController

我在所有的基础上,想要有一个iPhone的视图,一个iPad。 不过,我想为它们使用相同的视图控制器,因为它们是相同的东西,只是为每个设备进行了优化。

我知道这是可能的,因为它是一个通用的应用程序,通用项目的默认视图包含一个iPhone主视图和一个iPad主视图。 但是,他们自动实现,所以我不知道如何复制这个。

所以,这个问题的答案是:你如何将两个xib连接到一个viewcontroller?

谢谢,

  • 可靠的人

在代码..无论你批量新视图..像这样

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { self.MainView = [[[YOurViewController alloc] initWithNibName:@"YOurViewController_iPad" bundle:nil]autorelease]; } else { self.MainView = [[[YOurViewController alloc] initWithNibName:@"YOurViewController_iPhone" bundle:nil]autorelease]; } 

你将不得不用你的名字和class级名称来replace。

在上面… 更重要的一步是进入每个xib文件 ..点击File Owner ..并在我* 牙齿检查器 *(右上angular的图标)..确保它是类YOurViewController

首先,当您加载视图时,您可能需要检查它是什么设备。 如果iPhone xib1否则xib2 。 修改如何加载xib本身。 它的东西。 当你想在UIViewController更改视图时,只需使用下面的代码:

 NSArray *nibObjs = [[NSBundle mainBundle] loadNibNamed:@"xib2" owner:self options:nil]; UIView *aView = [nibObjs objectAtIndex:0]; self.view = aView; 

从代码:

 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ videosController = [[SoftLensAdvanceSearch alloc] initWithNibName:@"VideosController_ipad" bundle:nil]; } else{//iphone videosController = [[SoftLensAdvanceSearch alloc] initWithNibName:@"VideosController" bundle:nil]; } 

从IB

创build2个不同版本的“xib”文件,并指定“文件名”(xcode 4.3+属性窗口中的第一组),即为iphone添加iphone文件名,为ipad添加ipad文件名。

但丁已经回答了我的这个问题。 “在上面…更重要的一步是进入每个xib文件..点击文件所有者(左栏)..并在我*牙齿检查员*(图标在右上angular)..确保它是类YOurViewController“

但是我会补充说把所有的button都放在一个笔尖里。 然后放置它们,但是不要像在辅助视图中一样连接它们。 相反,右键单击左栏中的文件所有者,您将看到一个完整的button和插口表,可以连接到新的Nib中的对象。

希望这可以帮助。