添加一个ViewController到Appdelegate

问题描述:

我想添加一个视图控制器到Appdelegate类。我的代码都这样..添加一个ViewController到Appdelegate

[self.view addsubView:viewcontroller.view]; 

但不幸的是我不能够查看控制器视图。请建议我是否在某处出错。感谢您的时间。

在AppdidFinishLaunching的方法是: -

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
    // Override point for customization after application launch. 
    self.window.backgroundColor = [UIColor whiteColor]; 
    // [self.window addSubview:videoController.view]; 
    self.window.rootViewController = videoController; 
    [self.window makeKeyAndVisible];  
    return YES; 
} 

,并在我写的

UIButton *playMovie = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
playMovie.frame = CGRectMake(70,30,100,50); 
[playMovie setTitle:@"Play Movie" forState:UIControlStateHighlighted]; 
[playMovie addTarget:self action:@selector(playMovie:) forControlEvents:UIControlEventTouchDown]; 
[self.view addSubview:playMovie]; 

的视图控制器的负载视图这里的问题是我不能够查看按钮,请帮助。

在任何情况下,您都不应该添加视图控制器的视图手动像这样的接口。应用程序委托本身不是一个视图控制器;所以viewcontroller不是它的孩子。所以这个观点不是你的补充。正确使用视图控制器:视图控制器可以是您的应用程序窗口的rootViewController,也可以是其他视图控制器的子视图 - 无论哪种情况,其视图都会自动放入界面中。

如果此视图旨在成为应用程序的根视图,请执行Xcode 4.2项目模板(例如单视图应用程序)的操作:实例化视图控制器并将其指定为self.window.rootViewController。如果不是这样,那么您不得使用视图控制器将其作为子视图添加;只需获取视图并添加它,而不需要介入视图控制器。

它可以帮助你阅读视图控制器我的一章:http://www.apeth.com/iOSBook/ch19.html

+0

上面非常有用提供的描述。谢谢(你的)信息。但仍然当我尝试将视图控制器分配给窗口仍然无法查看viewcontroller。请帮忙。我正在用代码编辑问题。请让我知道,如果我错了某处... – 2012-03-05 04:43:49

+0

你说'self.window.rootViewController = videoController',但我没有看到你指定'videoController'值;你永远不会实例化你的视图控制器。所以一切都是零。你没有视图控制器,也没有视图,所以你最终得到一个白色的窗口。 – matt 2012-03-05 19:10:09

+0

另外你的'loadView'写入不正确。阅读文档(和我链接的章节)!在'loadView'中,您必须创建视图并将其分配给'self.view'。将视图添加到视图的地方在'viewDidLoad'中。 – matt 2012-03-05 19:11:27

尝试以下工作对我来说,

SFRmbrVC *viewController=[[SFRmbrVC alloc]initWithNibName:@"SFRmbrVC" bundle:nil]; 
[self.window.rootViewController addChildViewController:viewController]; 
viewController.parentController = self.window.rootViewController; 
viewController.view.frame = self.window.rootViewController.view.frame; 
[self.window.rootViewController.view addSubview:viewController.view]; 
viewController.view.alpha = 0; 
[viewController didMoveToParentViewController:self.window.rootViewController]; 

[UIView animateWithDuration:0.25 delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^ 
{ 
    viewController.view.alpha = 1; 
} 
       completion:nil];