【问题标题】:Can we use Two different Xib's for one View Controller?我们可以为一个视图控制器使用两个不同的 Xib 吗?
【发布时间】:2016-11-23 03:49:30
【问题描述】:

我有两个不同的xib。假设我们为 iPhone 创建了一个 xib,为 iPad 创建了另一个。我想知道如何将 iPad xib 的出口引用属性传递给已由 iPhone Xib 设置的 viewcontroller 属性。

我知道一种实现方式是使用 Size 类。但我想知道我们如何从上述方法中实现。

【问题讨论】:

  • 您可以创建另一个 xib 并将其命名为 [ViewControllerName]~ipad,然后将根据设备加载正确的 xib。您只需像在任何其他 xib 中一样连接插座。
  • 嘿@dan 我创建了两个单独的 Xib。但我不想给视图控制器提供参考出口。

标签: ios iphone ipad uiview xib


【解决方案1】:

设置两个Xib并设置名称

1.ViewController_ipad.XIB for ipad

2.ViewController.XIB for iphone

当您在打开 iphone xib 时在 iPhone 中运行您的项目时。 当你在 iPad 上运行你的项目,同时打开 ipad xib。

然后设置这样的逻辑

if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
    {
        ViewController *tempView = [[ViewController alloc] initWithNibName:@"ViewController_ipad" bundle:nil];
        [self.navigationController pushViewController:tempView  animated:YES];
    }
    else
    {
         ViewController *tempView = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
         [self.navigationController pushViewController:tempView  animated:YES];           
    }

【讨论】:

    【解决方案2】:

    是的。您可以在单个视图控制器中使用两个 xib。 使用它,您可以切换到其他笔尖。 (西布) NSString* nib = @"ViewController";

    if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
        nib = @"ViewController_iPad";
    
    ViewController * view = [[ViewController alloc] initWithNibName:nib bundle:nil];
    [self.navigationController pushViewController:view animated:YES];
    

    您可以将相同的函数与其他 nib 对象绑定,但您必须为每个对象绑定不同的名称

    Like :- 你在 ViewController apple 中的标签 所以你可以把标签名称 在 ViewController_iPad apple_iPad 中。

    这意味着您可以在两个 nib 中使用相同的功能,但您必须为两者使用 diff 对象绑定。

    【讨论】:

      【解决方案3】:

      是的,我们可以为同一个 viewController 使用两个不同的 xib。下面是一个示例,我们希望 iPhone 和 iPad 使用不同的 xib。

      NSString* nibName = @"ProgressViewController";
      
      if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
          nibName = @"ProgressViewController_iPad";
      
      ProgressViewController * view = [[ProgressViewController alloc] initWithNibName:nibName bundle:nil];
      [self.navigationController pushViewController:view animated:YES]; // Optional if you have used navigation controller at root
      

      【讨论】:

      • 嘿@Aamir 创建了两个独立的 Xib。但我不想给视图控制器提供参考出口
      • reference outlets to the view controller 是什么意思?
      • 我的问题是:我需要从 iPad/iPhone 或两者的 xib 中提供属性引用来查看控制器吗?
      • 请粘贴您的代码示例以便更好地理解。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 2019-03-02
      • 2013-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多