我的第一个仅适用于iPhone的应用程序我决定实现在iPad上使用的功能,我想要选择在iPhone或iPad开启时使用的视图,我写的代表:
NSString *devy = [[UIDevice currentDevice]model];
if ([devy isEqualToString:@"iPad"]) {
[window addSubview:viewController.viewCpuIpad];
[window makeKeyAndVisible];
} else {
[window addSubview:viewController.view];
[window makeKeyAndVisible];
}
当iPhone没问题的时候,但是当我在iPad上打开它时只显示一个空白的屏幕....哪里错了?
感谢
答案 0 :(得分:0)
Apple推荐的方式(取自Xcode的通用应用程序项目模板)是:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease];
} else {
self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil] autorelease];
}
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
如果您不想使用IB,可以在视图控制器的loadView方法中创建视图,如:
- (void)loadView
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.view = // create view for iPad.
} else {
self.view = // create view for iPhone.
}
}
(UI_USER_INTERFACE_IDIOM()是支持iOS 3.1及更早版本的宏。)
答案 1 :(得分:0)
当你在iPad上发布时,而不是打电话,
[window addSubview:viewController.viewCpuIpad];
试试,
viewController.view = viewCpuIPad;
[window addSubview:viewController.view];
我的建议是,当您在iPad上启动时,您不会更新viewController.view属性。
默认情况下,创建nib时,viewController.view设置为为iPhone显示的nib视图。
对于iPad,您应该将此[viewcontroller view]属性更新为指定的视图。另外,正如Hoshi所建议的那样,它也是一个有两个不同Nib文件的好方法,这样你就可以根据条件加载所需的笔尖。
希望这会有所帮助:)