2012-12-23 100 views
4

我想使用容器視圖來啓動另一個視圖控制器,但是我看不到有關如何對其進行編程分配的任何信息。我可以從用戶界面來完成,但是如果我想用coes創建一個,並將其鏈接到UIviewController,我該怎麼做?它的行爲像一個普通的UIview嗎?IOS中的容器視圖

+0

' - [UIViewController presentModalViewController:animated:]'&co。閱讀蘋果出色的文檔。 – 2012-12-23 19:31:18

+0

但我想要使用容器 – Alessandro

+0

將其設置爲子視圖控制器 – sridvijay

回答

11

如果我按照你的問題,你問如何在代碼中使用視圖控制器遏制。我建議你檢查出視圖控制器編程指南Creating Custom Container View Controllers部分,這表明你做這個,包括添加子視圖控制器代碼:

[self addChildViewController:content];     // 1 
content.view.frame = [self frameForContentController]; // 2 
[self.view addSubview:self.currentClientView]; 
[content didMoveToParentViewController:self];   // 3 

當使用子視圖控制器(至少那些別不佔用整個屏幕),在父視圖控制器的視圖上有一個UIView是有用的,它指定了子視圖控制器的邊界。它大大簡化了一堆任務。在上面的代碼片段中,他們假設子視圖被稱爲frameForContentController

或移除一個(此代碼段中,content正在刪除引用子控制器UIViewController *):

[content willMoveToParentViewController:nil]; // 1 
[content.view removeFromSuperview];   // 2 
[content removeFromParentViewController];  // 3 

如果你想替換另一個孩子控制器子控制器:

- (void) cycleFromViewController: (UIViewController*) oldC 
       toViewController: (UIViewController*) newC 
{ 
    [oldC willMoveToParentViewController:nil];      // 1 
    [self addChildViewController:newC]; 

    newC.view.frame = [self newViewStartFrame];      // 2 
    CGRect endFrame = [self oldViewEndFrame]; 

    [self transitionFromViewController: oldC toViewController: newC // 3 
      duration: 0.25 options:0 
      animations:^{ 
      newC.view.frame = oldC.view.frame;      // 4 
      oldC.view.frame = endFrame; 
      } 
      completion:^(BOOL finished) { 
      [oldC removeFromParentViewController];     // 5 
      [newC didMoveToParentViewController:self]; 
      }]; 
} 

我也建議檢出WWDC 2011 - Implementing UIViewController Containment

0

只需使用歸屬於VC的普通UIView。創建一個子VC並在addChildViewController:的幫助下將其添加到父VC,然後將子VC的視圖作爲子視圖添加到容器視圖中 - viewDidLoad方法中的addSubview:

+1

無論何時執行'addChildViewController',請確保對'didMoveToParentViewController'執行操作。 – Rob

+0

謝謝,一定要 –

相關問題