我有我的ViewController和另外3个控制器,我想把它们放到我的ViewController中。
这是一个代码,我正在制作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];
}
在我的故事板中,我有一个控制器(ViewController)和另外三个我的ViewControllers。但是当我向这个控制器添加一些UI时,在我的主ViewController上它们并没有显示出来。
示例:我在故事板中为我的EnterAndLogViewController添加一个按钮,进行插座和操作,但是这个按钮不会显示在我的主ViewController中。
为什么呢?你能帮帮我吗?
答案 0 :(得分:0)
不要使用alloc / init来创建视图控制器。如果这样做,视图控制器的视图将无法加载。如果在故事板中定义了视图控制器,请使用故事板方法instantiateViewControllerWithIdentifier:
(您需要在故事板中的每个场景上设置唯一标识符。
代码可能如下所示:
EnterAndLogViewController *EALViewController =
[self.storyboard instantiateViewControllerWithIdentifier: @"EnterAndLogViewController"];
(假设您在IB中使用唯一标识符" EnterAndLogViewController")设置了视图控制器的场景。
然后,您可以将该视图控制器安装为子视图控制器。
请注意,对于iOS的最新版本,您可以在父视图控制器中设置容器视图,并链接一个" embed segue"自动为你做这件事。这样可以为您完成所有内务管理,并让您轻松定义子视图控制器的框架。