首页 > 解决方案 > 使用什么作为 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: )

提前致谢!

标签: swiftnscoder

解决方案


当你说 View 时,你是指 UIView 吗?问题是那是错误的初始化程序。init(coder:)不是你叫的东西;当故事板中有这些东西之一并且您加载该视图控制器时,它是由故事板启动的过程。

代码 UIView 指定的初始化程序是init(frame:). 实现它并调用它,你就准备好了。

(您可能必须提供 的实现,init(coder:)但它应该只抛出一个fatalError,因为您不希望以这种方式调用。)


推荐阅读