2014-11-21 12 views
0

我有我的ViewController和另外3個控制器,我想把它們放到我的ViewController中。childViewControllers的接口

這裏是一個代碼,我正在製作childViewControllers並添加它們。用不同的顏色,看我是否正確地計數框架。

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    EnterAndLogViewController *EALViewController = [[EnterAndLogViewController alloc]init]; 
    SentPacksViewController *SPViewController = [[SentPacksViewController alloc]init]; 
    RecievedPacksViewController *RPViewController = [[RecievedPacksViewController alloc]init]; 

    [self makeChildViewController:EALViewController]; 
    [self makeSizeOfEALViewController:EALViewController]; 

    [self makeChildViewController:SPViewController]; 
    [self makeSizeOfSPViewController:SPViewController]; 

    [self makeChildViewController:RPViewController]; 
    [self makeSizeOfRPViewController:RPViewController]; 




} 

- (UIColor *)makeColor 
{ 
    CGFloat hue = (arc4random() % 256/256.0); // 0.0 to 1.0 
    CGFloat saturation = (arc4random() % 128/256.0) + 0.5; // 0.5 to 1.0, away from white 
    CGFloat brightness = (arc4random() % 128/256.0) + 0.5; // 0.5 to 1.0, away from black 
    UIColor *color = [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1];\ 
    return color; 
} 


- (void) makeChildViewController:(UIViewController *) controller 
{ 
    [self addChildViewController:controller]; 
    [self.view addSubview:controller.view]; 
    [controller didMoveToParentViewController:self]; 

} 

- (void) makeSizeOfEALViewController: (EnterAndLogViewController *) controller 
{ 
    CGRect myFrame=CGRectMake(20.0f, 20.0f,self.view.bounds.size.width - 40.0f , (self.view.bounds.size.height - 40.0f)/2.0f); 
    controller.view.frame = myFrame; 
    //controller.view.backgroundColor = [self makeColor]; 
} 

- (void)makeSizeOfSPViewController : (SentPacksViewController *) controller 
{ 
    CGRect myFrame=CGRectMake(20.0f, (self.view.bounds.size.height - 40.0f)/2.0f +20 , (self.view.bounds.size.width- 40.0f)/2 , (self.view.bounds.size.height - 40.0f)/2.0f); 
    controller.view.frame = myFrame; 
    controller.view.backgroundColor = [self makeColor]; 

} 

- (void) makeSizeOfRPViewController : (RecievedPacksViewController *) controller 
{ 
    CGRect myFrame=CGRectMake(20.0f + (self.view.bounds.size.width- 40.0f)/2 , (self.view.bounds.size.height - 40.0f)/2.0f +20 , (self.view.bounds.size.width- 40.0f)/2 , (self.view.bounds.size.height - 40.0f)/2.0f); 
    controller.view.frame = myFrame; 
    controller.view.backgroundColor = [self makeColor]; 


} 

在我的故事板我有1個控制器(ViewController)和3個我的ViewControllers。但是,當我添加一些用戶界面到這個控制器,在我的主要ViewController他們不顯示。

示例:我在故事板中的EnterAndLogViewController中添加了一個按鈕,使出口和動作成爲可能,但是此按鈕未顯示在我的主ViewController中。

爲什麼?你可以幫我嗎?

回答

0

不要使用alloc/init來創建視圖控制器。如果你這樣做,視圖控制器的視圖不會被加載。如果視圖控制器在你的故事板中定義,用故事板方法instantiateViewControllerWithIdentifier:(你需要設定每個場景的唯一標識符在你的故事板

的代碼可能是這樣的:

EnterAndLogViewController *EALViewController = 
    [self.storyboard instantiateViewControllerWithIdentifier: @"EnterAndLogViewController"]; 

(這是假設您設置視圖控制器在IB場景唯一標識符「EnterAndLogViewController」)

然後,您可以安裝視圖控制器作爲一個子視圖控制器。

請注意,對於最新版本的iOS,您可以在父視圖控制器中設置一個容器視圖,並鏈接一個「embed segue」來自動爲您執行此操作。爲您做所有的家務管理,並讓您可以輕鬆定義子視圖控制器的框架。

+0

它的工作原理,謝謝。我忘了這個方法,很明顯。現在我明白如何做到這一點。 我想這樣做,謝謝你的時間! – SpencerReid 2014-11-21 16:28:05