将两个XIB连接到一个ViewController

时间:2012-03-12 04:52:46

标签: objective-c ios xcode uiviewcontroller views

在所有基础知识中,我想要拥有iPhone的视图和iPad的视图。但是,我想为它们使用相同的视图控制器,因为它们是相同的,只是针对每个设备进行了优化。

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

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

谢谢,

  • 杰克

4 个答案:

答案 0 :(得分:9)

代码中的

..无论你在哪里批评新视图..喜欢这个

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];
}

您必须用您的笔名替换笔尖名称和类名。

高于此... 更重要的一步是进入每个xib文件 ..点击文件所有者 ..并在i * 牙齿检查员 *(右上角的图标)..确保它是类YOurViewController

答案 1 :(得分:0)

首先,当您加载视图时,可能需要检查它是什么设备。如果iPhone xib1另有xib2。重新考虑如何加载xib本身。它是好的。如果您想在UIViewController中更改视图,只需使用以下代码:

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

答案 2 :(得分:0)

来自代码:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){

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

来自IB

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

答案 3 :(得分:0)

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

但我会补充说,将所有按钮设置在一个笔尖中。然后放置它们,但不要像在助手视图中那样连接它们。而是右键单击左栏中的“文件所有者”,您将看到一个完整的按钮和插座表,可以连接到新笔尖中的对象。

希望这有帮助。