适用于ipad和iphone的MainWindow.xib

我正在尝试构建这个包含MainWindow.xib和ImageManipViewController.xib的演示 。 但我的应用程序在AppDelegate.m中包含以下代码,而我的应用程序(但?)包含MainWindow.xib。 我是否更好/最好添加2个MainWindow.xib文件(一个用于iPhone,一个用于iPad)(在我的方法中调用,每个调用自己的xib文件)或者是MainWindow.xibs只是额外的?

(顺便说一句,如果事实certificate答案是MainWindow.xibs是冗余的,那么你能说出为什么它可能在原始演示中被使用了吗?是否可能只是作者的结果简化了创建演示的步骤,例如?)我还没有找到直接联系作者的方法。

如果有更好的方法来开发“通用”应用程序,请告诉我。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { self.viewController = [[BSViewController alloc] initWithNibName:@"BSViewController_iPhone" bundle:nil]; } else { self.viewController = [[BSViewController alloc] initWithNibName:@"BSViewController_iPad" bundle:nil]; } self.window.rootViewController = self.viewController; 

您可以通过编程方式或使用Xib文件构建主窗口及其附加的子视图(甚至是视图控制器)。 结果是一样的,但是小型演示项目经常使用Xib文件来简化代码并专注于他们想要向您展示的部分。

两个Xib,一个用于iPad,一个用于iPhone,非常好,因为鼓励iPad应用程序使用能够充分利用iPad大屏幕的视图; 因此,建议将它们保存为单独的文件。 不过,您的型号和控制器应该是iPad和iPhone的共同之处。

关于加载Xib,如果您的项目针对的是iOS 4.0或更高版本,您可以将您的xib文件命名为“BSViewController~iphone.xib”和“BSViewController~ipad.xib”并避免代码中的某些条件:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.viewController = [[BSViewController alloc] initWithNibName:@"BSViewController" bundle:nil]; self.window.rootViewController = self.viewController; }