Objective c 将两个XIB连接到一个ViewController

Objective c 将两个XIB连接到一个ViewController,objective-c,ios,xcode,uiviewcontroller,views,Objective C,Ios,Xcode,Uiviewcontroller,Views,从根本上说,我希望看到iPhone和iPad。但是,我想对它们使用相同的视图控制器,因为它们是相同的东西,只是针对每个设备进行了优化 我知道这是可能的,因为它是一个通用应用程序,通用项目的默认视图包括一个iPhone主视图和一个iPad主视图。然而,它们是自动实现的,所以我不知道如何复制它 所以,这个问题的jist是:如何将两个XIB连接到一个viewcontroller 谢谢 杰克 在代码中。。无论你在哪里都能看到新的风景,你喜欢这样吗 if ([[UIDevice currentDevic

从根本上说,我希望看到iPhone和iPad。但是,我想对它们使用相同的视图控制器,因为它们是相同的东西,只是针对每个设备进行了优化

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

所以,这个问题的jist是:如何将两个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];
}
您必须将nib名称和类名替换为您的


除此之外,更重要的一步是进入每个xib文件。单击文件所有者。。在i*dentity inspector*(右上方的图标)中。。确保它在代码中属于YOurViewController类。。无论你在哪里都能看到新的风景,你喜欢这样吗

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];
}
您必须将nib名称和类名替换为您的


除此之外,更重要的一步是进入每个xib文件。单击文件所有者。。在i*dentity inspector*(右上方的图标)中。。确保它属于YOurViewController的

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

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

首先,在加载视图时,可能需要检查它是什么设备。如果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

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

来自代码:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){

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

来自IB


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

Dante已经回答了我的问题。“除此之外,还有一个更重要的步骤是进入每个xib文件。单击文件所有者(左列)…并在i*dentity inspector*(右上角的图标)…确保它属于YOurViewController类”

但我要补充一点,那就是把你所有的按钮都放在一个笔尖上。然后放置它们,但不要像在助手视图中那样在第二个视图中连接它们。相反,右键单击左栏中的File Owner,您将看到一个包含按钮和插座的完整表格,可以连接到新Nib中的对象


希望这有帮助。

但丁已经回答了我的问题。“除此之外,还有一个更重要的步骤是进入每个xib文件。单击文件所有者(左列)…并在i*dentity inspector*(右上角的图标)…确保它属于YOurViewController类”

但我要补充一点,那就是把你所有的按钮都放在一个笔尖上。然后放置它们,但不要像在助手视图中那样在第二个视图中连接它们。相反,右键单击左栏中的File Owner,您将看到一个包含按钮和插座的完整表格,可以连接到新Nib中的对象


希望这能有所帮助。

您制作了两个不同的xib文件?/。。2.你所说的两种观点到底是什么意思1.你能解释一下吗。我想将两个视图(xib)连接到同一个ViewController您制作了两个不同的xib文件?/。。2.你所说的两种观点到底是什么意思1.你能解释一下吗。我想将两个视图(XIB)连接到同一个ViewControllers我知道您说过“无论在何处创建新视图”,但我有点困惑。例如,这会出现在与这两个视图关联的视图控制器中吗?我知道您说过“无论您在何处创建新视图”,但我有点困惑。例如,这会进入与两个视图关联的视图控制器中吗?