创建自定义 class 并从故事板添加到我的 viewcontroller?

Creating custom class and adding to my viewcontroller from storyboad?

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

还有对应的class。

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

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

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

Any NSObject subclass可以实例化为nib对象。在库中查找对象:

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

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

@IBOutlet var chartViewModel : ChartModel!

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

var chartViewModel = ChartModel()

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

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