swift - 使用什么作为 NSCoder 来初始化视图?
问题描述
大家好,我创建了一个新的自定义视图类,现在我想构建它的一个实例,我使用以下代码对其进行了初始化:
required init?(coder aCoder: NSCoder) {
super.init(coder: aCoder)
tapRecognizer = UITapGestureRecognizer(
target: self, action: #selector(handleBarTap))
addGestureRecognizer(tapRecognizer)
}
deinit {
removeGestureRecognizer(tapRecognizer)
}
这就是实例,但我可以使用什么作为编码器?
lazy var chartView = TutorialChartView(coder: )
提前致谢!
解决方案
当你说 View 时,你是指 UIView 吗?问题是那是错误的初始化程序。init(coder:)
不是你叫的东西;当故事板中有这些东西之一并且您加载该视图控制器时,它是由故事板启动的过程。
代码 UIView 指定的初始化程序是init(frame:)
. 实现它并调用它,你就准备好了。
(您可能还必须提供 的实现,init(coder:)
但它应该只抛出一个fatalError
,因为您不希望以这种方式调用。)
推荐阅读
- c - 代码块上的 Openmp
- python-3.x - Python/Kivy - 将变量从一个类发送到另一个类
- python - "".join(e[0] for e in phrase.split()) 的幕后发生了什么?
- kubernetes - 如何在 Kubernetes 上为有状态应用程序设置 Websphere Liberty 集群
- python - 使用 RGB 值调用 koalas.hist() 时如何更改颜色
- ruby-on-rails - 如何从控制器关注点调用模型
- java - 在信号量中调用 wait() 之前打印
- laravel - Laravel:返回更新后的模型和额外的数据透视
- php - 如何从我在 apache2 上的网页中删除 .php 文件扩展名
- r - 条件连接多个表覆盖而不是创建新列