【发布时间】:2014-03-19 00:23:56
【问题描述】:
故事板:
约束:
结果:
我正在尝试了解自动布局以及如何在容器中使用它。
当我打开 Storyboard 时,我得到了一个为我制作的默认 ViewController。我在里面放了一个 View Container。然后我添加了一个松散的(未连接到任何东西)ViewController。我希望将新 ViewController 中的内容放入容器中。
所以添加的 ViewController 将被放入容器中,由三个标签组成,我正在使用自动布局。
单击故事板中容器视图控制器的黑条,我转到身份检查器并将自定义类设置为“ContainerViewController”。然后我将 Storyboard ID 设置为松散视图控制器的“ChildController”。
然后我在ContainerViewController.m 中覆盖viewDidLoad:
- (void)viewDidLoad
{
[super viewDidLoad];
UIViewController *child = [self.storyboard instantiateViewControllerWithIdentifier:@"ChildController"];
[self addChildViewController:child];
[self.view addSubview:child.view];
}
为什么放在容器中时自动布局的约束不起作用?我希望他们会这样做,所以我可以更进一步地了解 UIPageViewController。
编辑:
所以它似乎是帧大小。在将其添加为子视图之前,我需要做这样的事情:
child.view.frame = CGRectMake(0, 0, 265, 370);
现在我在ViewController.h 中为容器创建了一个出口。
@property (weak, nonatomic) IBOutlet UIView *container;
但是.. 从 ContainerViewController 中,当它尚未设置时,我如何询问呈现该属性的视图控制器(ViewController)?
ViewController *parent = (ViewController*)self.presentingViewController;
UIView *container = parent.container;
NSLog(@"ParentView Container Width: %f, Height: %f", container.frame.size.width, container.frame.size.height);
它只是给了我零宽度和高度,因为视图还没有加载。稍后当它加载时,我得到了实际值..
NSLog(@"View Controller Container. Width: %f, Height: %f", self.container.frame.size.width, self.container.frame.size.height);
问题:如何在presentingViewController 准备好/加载后访问它们的属性?
【问题讨论】:
标签: ios iphone objective-c