添加子视图时如何访问父视图

3
我有一个ViewController,在其中有两个不同大小的NSViews。我想将自定义ViewController的视图作为这两个NSViews的子视图添加,并让它动态地调整大小以填充(2个父视图)。我可以在主布局的实现文件中很好地完成这个过程,但代码量很大。相反,我希望我的自定义ViewController完成所有工作。为此,我需要知道要向其添加自定义视图的视图的高度和宽度。有一个parentViewController属性,但它对我没有任何作用。是否有一种方法可以引用正在添加视图的视图?
在我的自定义ViewController的viewDidLoad方法中,我希望能够有
[self.view setFrame:CGRectMake(0, 0, 
    self.parentViewController.view.frame.size.width, 
    self.parentViewController.view.frame.size.height)];

但这里的高度和宽度都是nil。

我已经花了几个小时查阅文档,但仍然感到困惑。任何帮助都将不胜感激。

1个回答

4

首先应该设置parentViewController属性。如果没有设置,它将为空。您没有指定是否正确设置了它。不过,假设您的视图的superview已经正确设置,有一种更简单的方法可以实现这一点。尝试这个:

[self.view setFrame:self.superview.frame];

如果需要在超级视图中更改某些内容,则可以从超级视图的框架中创建矩形。

我应该在自定义视图控制器的viewDidLoad方法中设置parentViewController吗?谢谢提示! - Ethan
如果您在任何全局变量中维护对它的引用或从任何其他方法中获取它,那么您可以这样做。我会建议您在分配和初始化自定义视图控制器时设置它。 - MadhavanRP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接