我正在将iPhone应用转换为通用应用。
我为开场视图控制器添加了一个新的iPad类,并在我的AppDelegate.h文件中声明它,并在我的AppDelegate.m文件中合成它们:
UIWindow *窗口; UIWindow * windowiPad; AppViewController * viewController; AppViewControlleriPad * viewControlleriPad;
我检查我正在运行的设备并加载相应的类:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// Override point for customization after application launch.
navController = [[UINavigationController alloc] initWithRootViewController:viewControlleriPad];
// Add the view controller's view to the window and display.
[windowiPad addSubview:navController.view];
[windowiPad makeKeyAndVisible];
[navController setNavigationBarHidden:YES animated:NO];
} else {
//I am an iPhone!
// Override point for customization after application launch.
navController = [[UINavigationController alloc] initWithRootViewController:viewController];
// Add the view controller's view to the window and display.
[window addSubview:navController.view];
[window makeKeyAndVisible];
[navController setNavigationBarHidden:YES animated:NO];
}
一切似乎都运行良好 - 除了它仍然加载iPhone nib / xib文件AppViewController.xib而不是AppViewControlleriPad.xib。欢迎您询问更多信息,但我无法弄清楚如何在运行iPad而不是iPhone /原始xib文件时加载AppViewControlleriPad.xib。
我想,或许是天真的,如果xib文件与视图控制器的类名相同,那么ViewController会将其用作xib。
如何修复它以便为正确的设备加载正确的xib?
答案 0 :(得分:3)
你有拼写错误 - iPad资源的正确sufix是“~ipad”而不是“-iPad”。使用“~ipad”,您的资源将根据设备自动加载。
您的iPad控制器可能不需要另外的UIWindow。您可以在app起点使用相同的窗口。好的做法是有一个视图控制器(你可以为不同的设备执行一些特殊的东西)和两个笔尖(一个“普通”,第二个用“~ipad”sufix)。在极少数情况下,如果整个控制器行为完全不同,您可能需要使用两个视图控制器。
答案 1 :(得分:0)
这可能是由于您没有将iPad的视图控制器连接到IB中的文件所有者。