0

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

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

1 回答 1

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;
}
于 2013-01-15T16:39:14.043 回答