我有一个 UIView 的自定义子类。它有一个平移手势识别器,我已将其设置为必需的常量:
let dragger: UIPanGestureRecognizer
它是一个常量,因为它在视图初始化时创建一次,并在视图的生命周期内持续存在。
在视图的指定初始化程序中init(coder)
,我想创建我的平移手势识别器并将其连接起来。但是,在 Xcode 6.3 下,如果手势识别器是一个常数,我似乎不能这样做。(这似乎只是 Xcode 6.3 beta 下的问题 代码允许我在调用后设置平移手势初始化器super.init(coder)
)
由于该变量是必需的常量,因此需要在调用超类之前对其进行设置init(coder)
。但是,平移手势识别器的唯一初始化程序将 self 作为参数。在我打电话之前,Self 不可用super.init(coder)
。
因此,我无法在调用 toUIPanGestureRecognizer(target:action:)
之前调用 to创建手势识别器,super.init(coder)
因为我需要将 self 传递给该平移手势初始化程序,
...并且我不能在调用UIPanGestureRecognizer(target:action:)
之后调用super.init(coder)
,因为我必须在调用超类初始化程序之前为所有必需的常量/变量设置值。
我能想出的唯一解决方案是让我的手势识别器成为一个可选的变量,我不想这样做。在初始化器完成后它总是有一个值,并且每次我使用它时都必须打开一个可选的值,这很烦人。
我在这里错过了什么吗?