2011-11-06 13 views

回答

3

如果你使用接口生成器:

在SupportingFiles下,在-info.plist中,查找名为“Main 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”来尝试调用类成员变量。如果你的类被称为视图控制器则应该是:

// 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完全一样是进入正题。

+0

由于未捕获的异常'NSUnknownKeyException',原因:'[ setValue:forUndefinedKey:]终止应用程序:此类不是关键值编码兼容的关键视图。 ***第一次抛出调用堆栈: - 我得到这个错误信息 –

+0

@byranmac ViewController是我想重写和开始。 //初始化视图控制器 ViewController = [[ViewController alloc] init]; [[self window] addSubview:[ViewController view]]; - 我收到错误消息'Expected identifier or'(' –

+0

我假设ViewController是从uiviewcontroller继承的类吗?您还需要在应用程序委托中导入该标头。如果您想共享示例项目或更多代码,我可以 – bryanmac

0

的的MainWindow.xib文件仅仅是提供应用程序的一个UIWindow壳。虽然你可以把一个UIViewController在MainWindow.xib中,你也可以有你的应用程序代理未连接UIViewController出口,并挑选在运行时加载该笔尖在application:didFinishLaunchingWithOptions:方法,如:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)options { 
    if (case1) 
    self.viewController = [[[MyViewController1 alloc] initWithNibName:nil bundle:nil] autorelease]; 
    else if (case 2) 
    self.viewController = [[[MyViewController2 alloc] initWithNibName:nil bundle:nil] autorelease]; 
    else 
    self.viewController = [[[MyViewController2 alloc] initWithNibName:nil bundle:nil] autorelease]; 

    [window addSubview:self.viewController.view]; 
    [window makeKeyAndVisible]; 

    return YES; 
} 
相关问题