2014-06-09 135 views
0

我有2個視圖,ParentViewControllerChildViewController;我想在ParentViewController內嵌套ChildViewController。我在Storyboard中設計了ParentViewControllerChildViewControllerParentViewController.m包含父項的邏輯,ChildViewController.m包含子項的邏輯。在ParentViewController.m我添加了孩子,像這樣:添加子視圖控制器

ChildViewController *childVC = [self.storyboard instantiateViewControllerWithIdentifier:@"ChildSBI"]; 
[self addChildViewController:childVC]; 

我的問題:我該如何定位中ParentViewControllerchildVC(即設置它的起源)。

好像我想要做的東西像下面這樣:

  1. 的Alloc的init孩子
  2. 調用(無效)addSubview:對孩子的視圖(UIView的*)查看

回答

2

如何在ParentViewController中定位childVC(即設置它的原點)。

請記住,一個視圖控制器沒有起源 - 只有它的視圖。要使視圖控制器的內容出現在屏幕上,需要一個視圖來繪製視圖控制器的視圖。可以有有一個視圖控制器的視圖出現在另一個視圖控制器的視圖層次結構中,並且對於故事板很容易。

要設置視圖控制器之間的父/子關係的故事板,請執行下列操作:

  • 添加一個容器視圖父視圖控制器的視圖層次。

  • 將「嵌入」segue從該容器視圖拖到子視圖控制器。

  • 您可以使用通常的-prepareForSegue:sender:方法讓父控制器將數據傳遞給孩子。

你也可以做一些事情,編程,如果你願意,你已經得到的代碼是一個良好的開端:

ChildViewController *childVC = [self.storyboard instantiateViewControllerWithIdentifier:@"ChildSBI"]; 
[self addChildViewController:childVC]; 

之後,你的父視圖控制器應設置兒童看到的位置,並把它添加到父母的觀點,就像這樣:

UIView *childView = childVC.view; 
childView.frame = CGRectMake(150, 300, 100, 100); //use whatever coordinates you want 
[self.view addSubview:childView]; 

還有很多更詳細的Creating Custom Container Controllers,但基本的回答你的問題是,容器控制器應設置包含的控制器視圖的大小和位置。

+1

感謝您的提示。所以在實例化父母后,prepareForSegue會自動被調用?我打算在viewDidLoad中調用addChildViewController,因爲childview將始終存在 – Apollo

+1

@Apollo是的,如果使用嵌入segue,子視圖控制器將被實例化,並且父控制器加載時會調用「-prepareForSegue:sender:'其觀點。 – Caleb

+1

啊。感謝您提供非常詳細的答案和最新的程序化解決方案。非常有幫助我的朋友。 – Apollo

相關問題