无法将连接器从 IBOutlet 链接到视图控制器

Posted

技术标签:

【中文标题】无法将连接器从 IBOutlet 链接到视图控制器【英文标题】:Can't link connector from IBOutlet to View Controller 【发布时间】:2015-04-01 01:24:17 【问题描述】:

我为视图控制器创建了文件 AViewController.h 和 AViewController.m - 我已将此视图控制器的自定义类设置为 AViewController

我在 AViewController.h 中定义了一个对象,它是另一个 B 类的实例:

@property (weak, nonatomic) IBOutlet B *object_b;

我希望能够将此 IBOutlet 链接到视图控制器,以便我可以使用它来调用 B 类的函数以在视图控制器上显示内容。但是,我无法做到这一点——试图将一条线从对象拖到视图控制器上什么也没做。对象旁边没有错误或黄色警告符号。我也尝试从视图控制器到对象执行此操作,并且还从情节提要的菜单中尝试了此操作。

我的视图控制器应该重命名为“AViewController”吗?我有其他视图控制器,它们的名称与它们的自定义类不同,并且它们没有任何链接问题。

我尝试了以下解决方案: XCode 6: can't connect any IBOutlet to ViewController 和 Error in Xcode 6 - view controller does not have an outlet named (subview), 但他们没有工作。

我正在使用 XCode 6.2

这是一个非常烦人的问题;在之前的问题中有一些关于错误报告的讨论,但我不确定它是否已解决。感谢任何帮助!

【问题讨论】:

如果您正在尝试这样做,您不能将 IBOutlets 从一个控制器创建到另一个控制器。 【参考方案1】:

只要您的“B”类不是视图控制器,这应该很容易。第一步是转到您的故事板或相关的 .xib 文件并找到对应于“AViewController”的视图控制器。然后,找到里面有白色方块的小黄色圆圈(视图控制器的顶部)并控制+单击它。您应该会看到一个黑框弹出。 (见附图)。在框中,应该有一个名为“Outlets”的部分。您是否看到与您的“B”对象相关的行下方?如果是这样,则从该线右侧的白色圆圈拖动到视图控制器上代表“B”类的对象。这将把它连接起来。

如果黑框中没有“B”条目,则视图控制器的设置有问题。

如果您在黑框中有一个“B”条目,但无法将其连接到您的视图控制器,请执行以下步骤:确保您的视图控制器上有一个“B”类对象故事板。如果你不这样做,那就是你的问题。如果你这样做了,但你仍然无法让它工作,你可能需要在情节提要中设置对象的类类型。为此,请单击情节提要上的对象,然后在 xcode 中查看右侧面板(下面的屏幕截图 #2)。在面板中,单击上方的第三个图标(它看起来像一个小正方形)。在那里你会看到“自定义类”的内容。如果在“类”下它没有说“B”,那么这就是你的问题。如果这是您的问题,请将类别设置为“B”,然后尝试按照我的答案第一段中概述的步骤再次连接您的插座。

【讨论】:

感谢您的详细回复,布赖恩!我在黑框中确实有一个“B”条目并且无法连接它 - 所以我单击了我想要连接到的对象(ViewController 上的 UIImageView)并将其自定义类更改为 B。(到能够在自定义类下拉列表中看到类B,我首先必须将类B的继承从UIView更改为UIImageView)。完成此步骤后,链接工作正常! 我现在想将在 B 类中定义的名为 image 的 UIImageView 的另一个对象链接到 ViewController 上的同一个 UIImageView。我无法使用相同的方法做到这一点。我想这是因为,ViewController 上的 UIImageView 现在是自定义类 B,而对象图像是 UIImageView 的一个实例。我试图通过将 UIImageView 的自定义类改回 UIImageView 来欺骗 xcode;这样做不仅给了我一个例外,而且我也再也看不到黑匣子中的对象“图像”了。有什么建议吗? 太棒了,很高兴它成功了。对于您的另一个问题,我将创建一个关于堆栈溢出的新问题,并包含指向该问题的链接。那我可以帮你解答。一定要按规矩玩。 :-) 当然,我刚刚又提了一个问题:***.com/questions/29420170/…

以上是关于无法将连接器从 IBOutlet 链接到视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

Xcode11 不允许将标签连接到不同视图控制器上的 IBOutlet

UITableView 的自定义初始化连接为 IBOutlet [关闭]

我无法在 ViewController.swift 中链接 IBOutlets

ScrollView 中的 IBOutlet 产生 nil

XCode IBOutlet UIView 添加到 ViewControllers .h - UIViews 类型无法识别

将 UILabel 连接到 IBOutlet 会导致崩溃