是否可以从加载到的视图中访问/操作 nib 文件中的约束?

Posted

技术标签:

【中文标题】是否可以从加载到的视图中访问/操作 nib 文件中的约束?【英文标题】:Is it possible to access/manipulate the constraints in a nib file from the view it's loaded into? 【发布时间】:2013-11-08 21:25:57 【问题描述】:

示例项目:http://cl.ly/1g1L3E2Z0r1c

我创建一个 nib 文件,然后在其中创建一些视图,然后将其加载到另一个视图控制器中。在我引入的视图中,它是 UIView 的子类,我为其属性设置了插座。我有一个专门针对它从顶部距离的限制。

但是当我尝试在代码中访问它时(如下所示),我不能,它说它是空的:

self.tutorialScreen3.textLabelDistanceFromTop.constant += 150.0;
NSLog(@"%@", self.tutorialScreen3.textLabelDistanceFromTop);

我做错了什么?

【问题讨论】:

【参考方案1】:

在这一行

[[[NSBundle mainBundle] loadNibNamed:@"View" owner:nil options:nil] lastObject];

您正在从 View.xib 文件加载最后一个视图,它是视图 3,但您的属性 textLabelDistanceFromTop 未与此视图连接,而是与视图 2 连接。

您只需要在视图 3 中创建与在视图 2 中相同的约束,并将 textLabelDistanceFromTop 属性与视图 3 中的适当约束连接起来,它就不再是 nil 了。

我已经在你的项目中做了这个,所以你可以从这个位置下载它http://goo.gl/gGvIkn

【讨论】:

以上是关于是否可以从加载到的视图中访问/操作 nib 文件中的约束?的主要内容,如果未能解决你的问题,请参考以下文章

从 Nib 加载 NSView 的多个实例

当视图控制器从 nib 文件加载时,以模态方式在当前上下文中呈现视图控制器

XCode - 无法加载 NIB 文件包

如何显示从单独的 NIB 文件加载的子视图

从 nib 文件加载 UIView?

ios - 从 nib 文件加载解耦视图