使用不同的XIB启动应用程序

时间:2011-11-06 16:23:33

标签: iphone ios xcode cocoa-touch

我想用不同的Xib启动我的应用程序。我该怎么做?

由于

1 个答案:

答案 0 :(得分:3)

如果您正在使用界面构建器:

在SupportingFiles下,在-info.plist中,查找名为"主nib文件基本名称"的密钥。将其更改为您希望首先加载的XIB

你也可以把这个条目从plist中完全取出来。在main.m中给它你的appDelegate的名字:

    int retVal = UIApplicationMain(argc, argv, nil, @"HelloViewAppDelegate");

然后在appDelegate中,您可以根据代码和逻辑手动加载第一个视图控制器。就个人而言,我更喜欢这个,因为它更加清晰 - 这是我的委托和代码加载它。它没有我需要记住的IB中的所有绑定。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    // Override point for customization after application launch.
    CGRect screenBounds = [[UIScreen mainScreen] applicationFrame];
    CGRect windowBounds = screenBounds;
    windowBounds.origin.y = 0.0;

    // init window
    [self setWindow: [[UIWindow alloc] initWithFrame:screenBounds]];

    // init view controller
    _mainViewController = [[MainViewController alloc] init];

    [[self window] addSubview:[_mainViewController view]];

    [self.window makeKeyAndVisible];
    return YES;
}

编辑:

在下面回答你的评论。您粘贴了此无效代码:

// init view controller 
ViewController = [[ViewController alloc] init]; 
[[self window] addSubview:[ViewController view]]; 

那是无效的。你需要一个实例变量名。通过将其称为" ViewController"你试图调用类成员变量。如果你的类被称为ViewController,那么它应该是:

// notice the instance myviewController is of type ViewController
ViewController *myViewController = [[ViewController alloc] init]; 
// notice calling view against instance (myViewController)
[[self window] addSubview:[myViewController view]]; 

此时,如果它没有编译,则需要编辑问题并将main.m和appDelegate完全粘贴到问题中。