我正在将 iPhone 应用程序转换为通用应用程序。
- 我已经更改了所有 xCode 设置并添加了一个新的 MainWindow-iPad.xib
- 我已将所有界面构建器引用 Hook (例如,MainWindow-iPad 到适当的 iPad 类 viewController、窗口等)
我为打开的 View Controller 添加了一个新的 iPad 类,并在我的 AppDelegate.h 文件中声明了它,并在我的 AppDelegate.m 文件中合成了它们:
UIWindow *window; UIWindow *windowiPad; AppViewController *viewController; AppViewControlleriPad *viewControlleriPad;
在应用委托(delegate)中,我检查正在运行的设备并加载适当的类:
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 文件与 View Controller 的类同名,那么 ViewController 将使用它作为它的 xib。
如何修复它以便为正确的设备加载正确的 xib?
最佳答案
您有一个拼写错误 - iPad 资源的正确后缀是“~ipad”而不是“-iPad”。使用“~ipad”,您的资源将根据设备自动加载。
而且您可能不需要为您的 iPad Controller 添加另一个 UIWindow。您可以在应用程序起点使用相同的窗口。好的做法是拥有一个 View Controller (在内部你可以为不同的设备执行一些特殊的事情)和两个 Nib (一个“正常”和第二个带有“~ipad”后缀的)。在极少数情况下,如果整个 Controller 的行为完全不同,您可能希望使用两个 View Controller 。
关于ios - iPhone 应用程序转换为 iPad 应用程序显示 iPhone xib 而不是 iPad xib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9599442/