2010-11-08 124 views
4

我有以下代码,我想加载UIViewController。我怎样才能初始化和加载UIViewController。如何以编程方式加载UIViewController

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

    CC_DIRECTOR_INIT(); 

    NSLog(@"applicationDidFinishLaunching"); 

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





} 

回答

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

+0

yup!这是问题,你的文章帮我解决了它! – 2010-11-08 21:12:46

0

我认为你要添加的是:

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

loadNibNamed:owner:options:是UIKit中加入一个NSBundle的唯一方法。请参阅NSBundle UIKit Additions Reference。如果网点没有正确连线,那么请检查所有网点是否符合键值编码(替代答案:确保它们正确显示为属性)。

2

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

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

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

设置好视图后,需要将视图控制器作为子视图添加到当前视图中,或使用navigationController来推送新的视图控制器。你需要更具体地了解你想要做什么。

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

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

申请窗口预计的 端有一个根视图控制器应用程序启动

0

[视图的viewController]

这是如何加载viewC ontroller。当视图被访问时,它被延迟加载。

+0

查看是属性 – twodayslate 2014-07-28 21:05:21

相关问题