swift - 创建自定义类并从故事板添加到我的视图控制器?
问题描述
我只是从旧项目中复制代码。我发现了一些奇怪的东西,我不知道该怎么做。我只想创建如下图所示的“图表视图模型”。我也需要一个出口。
还有对应的类。
class ChartModel: NSObject {
// .....
}
我只想知道在故事板中使用模型的目的以及如何做到这一点。
解决方案
您是否曾经将手势识别器放入情节提要场景中?这是完全平行的。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
),因此无法详细说明在这种情况下的实际目的是什么。
推荐阅读
- php - How to proxy Headless Wordpress WPGraphQL Plugin Endpoint with NGINX?
- json - Flutter - Pass variable to another screen for URL GET JSON
- bash - How can we rearrange a table with bash?
- python - pandas: how to set the wrap in a dataframe
- c# - How to use increment and decrement operators for 'this' keyword?
- json - Not able to read values through Graph API JSON response
- oracle-cloud-infrastructure - unable to get status code of oci-cli command
- sql - 纠正 sql 查询以在 2 分钟内排除会话
- javascript - ChartJS v2.9.4 - 通过图例隐藏数据集时可能出现的故障
- python - 为什么 keras 的准确性和损失在不同时期之间没有变化以及如何修复