无法与IB中的约束进行出口连接

时间:2014-02-28 04:13:45

标签: ios interface-builder nslayoutconstraint outlet

我正在使用iOS 7运行XCode 5.我需要在布局之前动态更改UITextView的高度约束。我看过许多帖子,说明这可以通过从IB中的约束到源代码建立出口连接来完成。我试图从IB中的约束出口连接到拥有类的头文件,但是我无法建立连接 - IB没有"突出显示"当我拖动头文件时,就像从其他对象(如按钮等)建立连接时那样。

之前有没有遇到过这个?非常感谢所有帮助。

5 个答案:

答案 0 :(得分:49)

这是我做这件事的照片。我控制 - 从约束拖动到头文件。

enter image description here

在现实生活中,我更有可能控制 - 拖动到实现文件中的匿名类别,因为我不希望IBOutlet属性是公共的。所以这里也是一张照片。抱歉,此屏幕截图未显示光标:它位于拉伸线的底端。

enter image description here

答案 1 :(得分:2)

您可以通过以下方式建立出口连接:

  1. 打开助理编辑器,然后按住Ctrl键并将文本视图拖动到相应的头文件中。您应该看到为textview创建的属性。

  2. 手动输入@property(nonatomic,retain)IBOutlet UITextField *yourTextField;。打开助理编辑器,从小空圆圈(左侧属性)拖动到视图控制器中的相应控件。

  3. 如果仍无法建立连接,请清理,保存项目,然后重试。

答案 2 :(得分:1)

您是否尝试在UIView类中创建连接?看来你只能在UIViewController类中创建一个与Storyboard中该场景相关联的连接。

因此,如果您希望从View本身进行操作,那么您的解决方法可能是正确的。

答案 3 :(得分:1)

我觉得我迟到了这个答案,但仍然值得写出来。我遇到了类似的问题。我没有正确设置视图的文件所有者。您可以使用assistant editor进行简单的测试。如果助理编辑器不允许您为视图控制器选择automatic选项,则表示您未正确设置文件所有者。检查viewcontroller是否具有.xib文件的相同名称(通常是这种情况)。

这将允许您连接所有IBOutlet,包括约束。

答案 4 :(得分:0)

好的,仍然无法连接IB中的约束。但是,我通过使文本视图高度约束成为IB中的占位符来解决此问题,我将替换为我在视图的initWithCoder中创建的NSLayoutConstraint。我保持对创建的约束的引用,并根据需要修改其“常量”属性。

我可能会坚持使用这种解决方法,但如果有人能帮助我解决原始问题,那将非常感激。