2012-03-04 78 views
5

我想添加一個視圖控制器到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]; 

的視圖控制器的負載視圖這裏的問題是我不能夠查看按鈕,請幫助。

回答

9

在任何情況下,您都不應該添加視圖控制器的視圖手動像這樣的接口。應用程序委託本身不是一個視圖控制器;所以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

0

嘗試以下工作對我來說,

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]; 
相關問題