添加一个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
答
尝试以下工作对我来说,
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];
上面非常有用提供的描述。谢谢(你的)信息。但仍然当我尝试将视图控制器分配给窗口仍然无法查看viewcontroller。请帮忙。我正在用代码编辑问题。请让我知道,如果我错了某处... – 2012-03-05 04:43:49
你说'self.window.rootViewController = videoController',但我没有看到你指定'videoController'值;你永远不会实例化你的视图控制器。所以一切都是零。你没有视图控制器,也没有视图,所以你最终得到一个白色的窗口。 – matt 2012-03-05 19:10:09
另外你的'loadView'写入不正确。阅读文档(和我链接的章节)!在'loadView'中,您必须创建视图并将其分配给'self.view'。将视图添加到视图的地方在'viewDidLoad'中。 – matt 2012-03-05 19:11:27