我正在尝试使用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];
}
}
答案 0 :(得分:6)
第1步:为iPhone创建:
此步骤将创建具有相同名称的.m .h和.xib文件,例如:CustomView
第2步:为iPad创建新的XIB:
在您的代码中使用以下内容:
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文件。