如何以编程方式加载UIViewController

时间:2010-11-08 20:19:40

标签: iphone

我有以下代码,我想加载UIViewController。如何初始化和加载UIViewController。

- (void) applicationDidFinishLaunching:(UIApplication*)application
{

    CC_DIRECTOR_INIT();

    NSLog(@"applicationDidFinishLaunching");

    MainViewController *controller = [[MainViewController alloc] init]; 





}

5 个答案:

答案 0 :(得分:4)

从你的代表你可以这样做(假设你有IBOutlet UIWindow *窗口):

[window addSubview:[controller view]];
[window makeKeyAndVisible];

加载控制器后,您可以推送其他人(来自UIViewController):

controller = [[MainViewController alloc] init];
[[self navigationController] pushViewController:controller animated:YES];

以下是UINavigationController.pushViewController

文档的链接

http://developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationController_Class/Reference/Reference.html#//apple_ref/occ/instm/UINavigationController/pushViewController:animated

答案 1 :(得分:4)

TestViewController *testController = [[TestViewController alloc] init];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window setRootViewController:testController];
[self.window makeKeyAndVisible];

虽然添加子视图可以正常工作,但除非将控制器设置为RootViewController,否则会收到以下警告:

  

应用程序窗口应该有一个根视图控制器   应用程序启动结束

答案 2 :(得分:2)

您是否正在使用nib文件来设置视图的用户界面?您目前拥有的代码 加载并初始化ViewController。但是,您需要在视图中添加一些用户界面元素,并在应用程序中显示该视图控制器。如果您使用nib文件作为用户界面,那么您需要:

MainViewController *controller = [[MainViewController alloc] initWithNibName:@"nibFileName" bundle:nil];

这会将您的控制器与nib文件相关联。如果您没有使用nib文件,则需要以编程方式添加要显示的每个元素。

设置视图后,您需要显示视图控制器,方法是将其作为子视图添加到当前视图,或使用navigationController推送新的viewController。你需要更具体地了解你想要做什么。

答案 3 :(得分:0)

我认为你要添加的是:

[[NSBundle mainBundle] loadNibNamed:@"nibWithMainViewControllerAsOwner" owner:controller options:nil];

loadNibNamed:owner:options:是UIKit添加到NSBundle的唯一方法。见NSBundle UIKit Additions Reference。如果没有正确连接插座的任何问题,请检查所有插座是否符合键值编码(替代答案:确保它们作为属性正确公开)。

答案 4 :(得分:0)

[viewController view]

这是加载viewController的方法。访问视图时,它是延迟加载的。