2014-11-21 2 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 вы можете настроить представление контейнера в своем родительском контроллере представления и связать «встроить segue», чтобы сделать это для вас автоматически. Это делает все домашнее хозяйство для вас и позволяет вам легко определить структуру для ваших контроллеров детского вида.

+0

Это работает, спасибо. Я забыл об этом методе, это очевидно. Теперь я понимаю, как это сделать. Я хочу сделать так, спасибо за ваше время! – SpencerReid

Смежные вопросы