关于Xcode 4中的通用应用程序的问题

时间:2011-11-22 18:45:39

标签: iphone xcode ipad sdk ios5

我正在尝试使用Xcode 4构建一个通用应用程序。但是,它似乎与过去的版本有点不同。

我的项目使用基于视图的应用程序模板。我的问题是我添加了一个UIViewController子类,它有一个用于iPad的nib文件。如何为iPhone创建另一个具有相同类的nib文件?另外,如何确保为正确的平台加载正确的nib文件?

已编辑: 这是我的代码:

- (IBAction)BookView {

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        BookViewController *viewController = [[BookViewController alloc] initWithNibName:@"BookViewController" bundle:nil];
        [self presentModalViewController:viewController animated:YES];

    } else {

        BookViewController *viewController = [[BookViewController alloc] initWithNibName:@"BookViewController_iPad" bundle:nil];
        [self presentModalViewController:viewController animated:YES];
    }
}

2 个答案:

答案 0 :(得分:6)

第1步:为iPhone创建:

  • 新文件/ ios / cocoa touch / UIViewController子类
  • 取消选中Targeted for iPad
  • 查看XIB

此步骤将创建具有相同名称的.m .h和.xib文件,例如:CustomView

第2步:为iPad创建新的XIB:

  • 新文件/ ios /用户界面/视图 设备系列iPad
  • 为方便起见,请选择带有后缀_iPad的相同名称(例如CustomView_iPad)
  • 在此xib中转到文件所有者,在检查器选项卡中选择身份检查器,自定义类并选择在步骤1中创建的同一名称类。
  • 连接IBOutlets。

在您的代码中使用以下内容:

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    CustomView *viewController = [[CustomView alloc] initWithNibName:@"CustomView" bundle:nil];
} else {
    CustomView *viewController = [[CustomView alloc] initWithNibName:@"CustomView_iPad" bundle:nil];
}
祝你好运!

答案 1 :(得分:3)

为iPad BookViewController~ipo.xib 命名您的xib文件,为iPhone设置 BookViewController~iphone.xib 。然后像往常一样加载nib文件:

BookViewController *viewController = [[BookViewController alloc] initWithNibName:@"BookViewController" bundle:nil];
[self presentModalViewController:viewController animated:YES];

当应用程序在iPad设备上运行时,~ipad xib将自动加载。如果应用程序在iPhone上运行,则会自动加载~iphone xib。

请注意, ~ipad ~iphone 后缀区分大小写。如果你把它命名为〜例如iPad,你将得到一个运行时异常,找不到nib文件。