使用UIViewController加载nib文件

时间:2011-11-24 01:02:08

标签: iphone xcode cocoa-touch

我使用"创建基于窗口的应用程序"在Xcode 3.x中启动了一个项目。选项。该项目似乎从info.plist条目中加载主nib文件:"主nib文件基本名称"。

现在我希望使用UIViewController加载主nib文件。我是否可以删除info.plist条目并以编程方式在" application:didFinishLaunchingWithOptions:"中加载nib文件。使用视图控制器?

(现在项目已经转移到Xcode 4.2。但我想编译器版本在这种情况下不应该重要......)

希望在这个领域有人知道可以帮助......

1 个答案:

答案 0 :(得分:1)

如果你要升级同一个项目,那么你不能这样做。

Apple在其模板中用于进入应用程序的机制在这些版本之间发生了变化。

在3.x中,Main Interface在项目设置中设置为MainWindow.xib。在此xib中,您的app委托作为对象加载。

在4.x中,main.m专门使用以下行加载应用程序委托:

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

这是在3.x和4.x之间发生变化的最后一个参数

最好的办法是创建一个新项目,看看模板代码如何将它全部连接起来。

<强>更新

首先,如果你的项目有效,你真的需要改变吗?

如果是,那么我正在使用新项目中的模板代码

转到main.m并从

更改实施
int main(int argc, char *argv[]) 
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

NB AppDelegate更改为您的应用委托类的名称。

您还需要更新您的应用代理,以便以编程方式创建UIWindow

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    // Instantiate your rootViewController

    self.window.rootViewController = yourRootViewController;
    [self.window makeKeyAndVisible];
    return YES;
}

这些是我能想到的最明显的差异,可能还有其他一些字幕,但我已经很久没有使用3.x了。