Я раскадровку: Как программно добавить ChildVC?
Как вы можете видеть, у меня есть MenuViewController: UIViewController с контейнером. Контейнер MenuTableViewController: UITableViewController с MenuTableView: UITableView.
Что я хочу сделать, это изменить размер моего контейнера (MenuTableViewController) и добавить еще одного Ребенка в мой mainVC.
добавить его в MenuViewController:
-(void)viewDidAppear:(BOOL)animated {
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
MenuTableViewController* secondChildVC = [sb instantiateViewControllerWithIdentifier:@"MenuTableViewController"];
[secondChildVC.view setBackgroundColor:[UIColor redColor]];
[self addChildViewController:secondChildVC];
NSLog(@"MenuTableViewController.view info: %@",secondChildVC.view);
NSLog(@"secondChildVC views: %@",[secondChildVC.view subviews]);
MenuTableViewController *firstChildVC = [self.childViewControllers objectAtIndex:0];
[firstChildVC.view setFrame:CGRectMake(160, 0, 160, 504)];
[firstChildVC.view setBackgroundColor:[UIColor greenColor]];
NSLog(@"firstChildVC views: %@",[firstChildVC.view subviews]);
}
И это мой журнал:
MenuTableViewController.view info: <MenuTableView: 0x8910e00; baseClass = UITableView; frame = (0 20; 320 548); clipsToBounds = YES; opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0x761eca0>; layer = <CALayer: 0x76202b0>; contentOffset: {0, 0}>
2013-05-03 17:20:10.796 TestStories[41780:c07] secondChildVC views: (
"<UIImageView: 0x76205e0; frame = (0 541; 320 7); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x7620680>>",
"<UIImageView: 0x7620740; frame = (313 517; 7 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x76207e0>>"
)
2013-05-03 17:20:10.798 TestStories[41780:c07] firstChildVC views: (
"<UITableViewCell: 0x7143110; frame = (0 320; 160 320); autoresize = W; layer = <CALayer: 0x713cc10>>",
"<UITableViewCell: 0x7140b90; frame = (0 0; 160 320); autoresize = W; layer = <CALayer: 0x7140ce0>>",
"<UIImageView: 0x7135000; frame = (0 497; 320 7); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x71351b0>>",
"<UIImageView: 0x7135270; frame = (153 517; 7 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x7135310>>"
)
Почему мой secondChildVC не содержит TableViewCells? Без понятия.
Вы можете видеть, что я использую красные и зеленые цвета для фона (красный для secondChildCV). Но, вероятно, никогда не появляется. Вот скриншот:
Я ответил на вопрос, который вы задали, но почему вы хотите добавить второго ребенка в код? Поскольку вы делаете это в viewDidAppear, это сразу появится, так почему бы не просто сделать 2 вида контейнера в раскадровке в первую очередь? – rdelmar
Я хочу решить, сколько контейнеров у меня будет во время выполнения. Поэтому я не могу создать его в раскадровке. Это скорее скорее прототип контейнера, чем конечный продукт. Конечно, если эта идея ... хммм ... нехорошо, я открыт для предложения, как сделать ее лучше :) – Kuba