【问题标题】:Connect Two XIBs To One ViewController将两个 XIB 连接到一个 ViewController
【发布时间】:2012-03-28 13:09:55
【问题描述】:

基本上,我希望有一个适用于 iPhone 的视图,以及一个适用于 iPad 的视图。但是,我想为它们使用相同的视图控制器,因为它们是相同的,只是针对每个设备进行了优化。

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

所以,这个问题的要点是:如何将两个 xib 连接到一个视图控制器?

谢谢,

  • 杰克

【问题讨论】:

  • 你制作了两个不同的xib文件?/ ..你说的两个视图到底是什么意思..你能解释一下
  • 没问题。我想将两个视图(xib)连接到同一个视图控制器

标签: objective-c ios xcode uiviewcontroller views


【解决方案1】:

在代码中..无论您在哪里使用新视图..都这样做

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 文件..点击 File Owner.. 并进入i*身份检查器*(右上角的图标).. 确保它是 class YOurViewController

【讨论】:

  • 我知道你说“无论你在哪里拍新视图”,但我有点困惑。例如,这会进入与两个视图关联的视图控制器中吗?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    来自代码:

    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+ 中属性窗口中的第一组),即,对于 iphone,添加 iphone 文件名,对于 ipad,添加 ipad 文件名。

    【讨论】:

      【解决方案4】:

      Dante 已经回答了我遇到的问题。 “除此之外……更重要的一步是进入每个 xib 文件……单击文件所有者(左栏)……并在 i*dentity 检查器*(右上角的图标)中……确保它属于 YOURViewController 类”

      但我会补充一点,将所有按钮设置在一个 Nib 中。然后放置它们,但不要像使用助手视图那样将它们连接起来。相反,右键单击左栏中的 File Owner,您会看到一整张按钮和插座表,可以连接到新 Nib 中的对象。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2017-05-19
        • 2023-03-21
        • 2013-03-02
        • 2013-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多