ViewController 的子视图的 IBOutlets 在 Storyboard 的 viewDidLoad 中为零

Posted

技术标签:

【中文标题】ViewController 的子视图的 IBOutlets 在 Storyboard 的 viewDidLoad 中为零【英文标题】:ViewController's subview's IBOutlets nil in viewDidLoad from Storyboard 【发布时间】:2017-02-16 03:56:08 【问题描述】:

我有一个从情节提要中实例化的UIViewController。 在这个视图控制器中放置了一个MyView,它实际上只是一个来自 Xib 文件的UIView

在视图控制器中,我将视图设置为 MyView 类,并将其链接到视图控制器类中的 IBOutlet

MyView 包含一个UILabel

在视图控制器中,viewDidLoad 我尝试设置myView.myLabel.text = "test" 我得到一个fatal error: unexpectedly found nil while unwrapping an Optional valuemyLabel 为零。

不知道出了什么问题。

即使在awakeFromNib()required init?(coder) 我的出口也是零。

知道为什么以及如何解决它吗?

【问题讨论】:

你的 myView 也是 nil 吗? 不,它不是零 我已经更新了答案检查它是否适合你。 【参考方案1】:

仔细检查以确保情节提要和代码之间的链接正常。我曾经在断开连接时遇到过这种情况,我所要做的就是重新连接它。

【讨论】:

我删除了所有链接并重新创建了它们,它仍然是一样的。【参考方案2】:

看看你是否在xib中使用CustomViewClass我想告诉你首先在Vc.swift中将属性声明为@IBOutlet var viewObject: CustomViewClass!然后在故事板中给出对面的出口然后在CustomViewClass.swift中声明内部子视图出口/p>

现在您可以在您的Vc.swift 中随意访问您的CustomViewClass 的innersubviews 网点

viewObject.myLabel.text = "test"

别忘了给文件所有者的身份检查员Custom ClassVc和你的观点CustomViewClass

如果您有任何疑问,请随时在评论中提问。

【讨论】:

我做了所有这些,但我仍然遇到问题 我想重复一遍,确定给你的标签的 ParentView 提供MyView 类? 在您的 swift 项目中逐步检查您的问题并注意我的出口在 Vc.h 中,我很久以前在 obj-c 中工作过。 :D 我已经告诉过你不可能将故事板的出口设置到你的 Vc。您必须手动编写出口,然后您必须在情节提要中连接它。

以上是关于ViewController 的子视图的 IBOutlets 在 Storyboard 的 viewDidLoad 中为零的主要内容,如果未能解决你的问题,请参考以下文章

如何在一个 ViewController 中使用两个 Webview?

ViewController 的子视图的 IBOutlets 在 Storyboard 的 viewDidLoad 中为零

创建一个不管viewController如何都留在屏幕上的子视图

如何将子 ViewController 的视图添加到父 View 控制器的子视图中?

使用通过 ViewController 从 XIB 加载的子视图中的对象时出错

在 ViewController 中添加子视图数