是否可以在自定义视图中创建 @IBOutlet?

Is it possible to create an @IBOutlet in a custom view?

我已经在我的一个视图控制器中的故事板上创建了一个视图,并意识到我需要重用它。所以我接着为UIView创建了一个subclass来合并代码。我已经在故事板中选择了视图并将 class 更改为我的自定义视图 class。现在我想为视图中的几个组件(在本例中为 2 个文本字段)创建 @IBOutlets。当我尝试从故事板拖放到自定义视图文件时,它唯一允许我创建的是 @IBAction 和 @IBOutlet 变灰。

我尝试在代码中手动创建@IBOutlet,然后从圆圈拖动到故事板上的组件。一切似乎都正常(即我在黑色小弹出窗口中看到了连接,并且变量旁边的圆圈也被填充了。但是当我 运行 应用程序时,2 个字段为零。

为什么我只能创建动作而不能创建出口? (我是 iOS 开发人员的新手)。

如果您想重复使用 UIView,那么最好创建一个视图的 xib 和一个自定义的 class UIView。然后将 xib class 中的文件所有者更改为您自定义的 class。然后你可以将视图内部组件的IBOutlets拖放到自定义class。在情节提要中,您可以使用自定义视图并将视图 class 的名称更改为自定义视图。现在将 IBOutlets 从故事板拖放到 UIView。你可以看到我为你制作的教程视频。 https://youtu.be/IrgH522lbfA

不需要 XIB

  1. 在自定义 UIView 中手动编写 IBOutlet class,例如: @IBOutlet weak var container: UIView!

  2. 在左侧的“文档大纲”面板中打开故事板和select自定义视图。

  3. 打开右侧的连接检查器。从 Outlet 拖动到 Document Outline 面板中的自定义视图以连接它们。