0

可能重复:
如何根据 iOS 中的当前设备为单个类加载不同的 xib?

我开发了一个通用应用程序。我为 iPhone 实现了该应用程序。现在我必须为 iPad 实现。我有关于数据处理的完整代码在视图控制器中,view-controller.xib 用于 iPhone。我如何使用 iPad 的代码。

我为 ipad 创建了一个 xib 文件(ViewController_iPad.xib)。当我在 iPad 中运行应用程序时,我得到了 ipad xib,但数据未显示。

如何获取 viewController 中存在的数据?

谢谢你的建议。。

4

3 回答 3

1

在应用委托中添加此方法

 +(NSString *)getNibName:(NSString *)strNibName
    {
        if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
            return strNibName;
        else
            NSLog(@"%@",[NSString stringWithFormat:@"%@_iphone",strNibName]);
            return [NSString stringWithFormat:@"%@_iphone",strNibName];
    }

并在您需要时调用它

    ViewController *obj=[[ViewController alloc] initWithNibName:[AppDelegate getNibName:@"ViewController"] bundle:nil];
[self.navigationController pushViewController:obj animated:YES];
于 2013-01-17T10:13:10.687 回答
1

iOS 有一个简单的方法来NIB为 iPad 和 iPhone 加载不同的内容。

如果您将NIB文件命名为:ViewController~ipad.xib否则ViewController~iphone.xibiOS 将加载相应的文件。

我只将~ipad视图添加到我的通用项目中,如果NIB没有任何设备说明符,它将被加载到所有其他设备上。

您现在可以加载您的UIViewController喜欢:

 [[UIViewController alloc] alloc] initWithNibName:@"ViewController" bundle:nil];

这也适用于图像:

back.png //Normal images
back@2x.png // Retina images
back~ipad.png // iPad normal image
back@2x~ipad.png // Retina iPad images
于 2013-01-17T10:18:31.857 回答
0

对于您必须检查的第一件事是 iPad xib 中的文件所有者应该与 iPhone xib 的控制器相同。然后像在 iPhone xib 组件中那样进行所有连接,然后这应该可以工作。

于 2013-01-17T10:11:15.067 回答