首页 > 解决方案 > 创建自定义类并从故事板添加到我的视图控制器?

问题描述

我只是从旧项目中复制代码。我发现了一些奇怪的东西,我不知道该怎么做。我只想创建如下图所示的“图表视图模型”。我也需要一个出口。 在此处输入图像描述

在此处输入图像描述

还有对应的类。

class ChartModel: NSObject {
  // ..... 
}

我只想知道在故事板中使用模型的目的以及如何做到这一点。

标签: swiftstoryboard

解决方案


您是否曾经将手势识别器放入情节提要场景中?这是完全平行的。nib 的加载会实例化手势识别器并将其附加到视图,因此您不必在代码中执行此操作。这就是这里发生的事情。

任何NSObject 子类都可以实例化为 nib 对象。在库中找到对象:

在此处输入图像描述

将它从库中拖到场景中;选择它并将其在身份检查器中的类更改为所需的类(ChartModel)。

现在您面临的问题是,在加载 nib 时创建此实例时会发生什么。在 iOS 上,除非其他人保留它,否则它会烟消云散。通常的解决方案是你有一些其他的 nib 对象,它有一个到这个对象的出口。现在,当 nib 加载时,Object 被实例化并分配给另一个 nib 对象中的相应属性。这就是您的插座所做的:

@IBOutlet var chartViewModel : ChartModel!

好的,但到目前为止,这完全等同于说

var chartViewModel = ChartModel()

只是,我们没有在代码中实例化 ChartModel,而是通过加载 nib 来实例化它。

那么为什么首先要这样做呢?为什么要从 nib 而不是在代码中实例化这个 ChartModel?仅当 ChartModel本身具有可以在 nib 中配置的插座时才有意义。您没有向我们展示(您只展示了声明的第一行class ChartModel),因此无法详细说明在这种情况下的实际目的是什么。


推荐阅读