我们可以为一个View Controller使用两个不同的Xib吗?

时间:2016-07-20 04:21:58

标签: ios iphone ipad uiview xib

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

我知道一种实现方法是使用Size类。但我想知道如何通过上述方法实施。

3 个答案:

答案 0 :(得分:0)

设置两个Xib并设置名称

1.ViewController_ipad.XIB for ipad

2.ViewController.XIB for iphone

在打开iphone xib的同时在iPhone中运行Project。 在打开ipad xib的同时在iPad中运行Project。

并设置逻辑

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

答案 1 :(得分:0)

是的,我们可以为同一个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

答案 2 :(得分:0)

是。您可以在单视图控制器中使用两个xib。 使用此功能,您可以切换到其他笔尖。 (XIB)     NSString * nib = @" ViewController&#34 ;;

if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
    nib = @"ViewController_iPad";

ViewController * view = [[ViewController alloc] initWithNibName:nib bundle:nil];
[self.navigationController pushViewController:view animated:YES];

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

  

喜欢: - ViewController中的标签apple所以你可以放置标签名称   在ViewController_iPad apple_iPad。

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