适用于ipad和iphone的MainWindow.xib

时间:2013-01-15 15:57:06

标签: ios xib

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

(顺便说一句,如果事实证明答案是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;

1 个答案:

答案 0 :(得分:2)

您可以通过编程方式或使用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;
}