这是一个 SubtitleCustomField 类。
Class SubtitleCustomField: CustomCellField {
static var CellIdentifier: String!
override init(frame: CGRect) {
super.init(frame: frame)
if CellIdentifier == "A" {
//DO SOMETHINIG
} else if CellIdentifier == "B" {
//DO SOMETHING
}
}
}
在 SubtitleCustomField 类之外,我基本上需要访问静态变量 CellIdentifier,将值设置为“A”,并触发 if 语句运行。
在另一个类 Custom 类中,我确认我可以通过以下方式访问静态变量 CellIdentifier:
Class Custom: CustomViewController {
SubtitleCustomField.CellIdentifier = "part1_subtitle"
}
此时我遇到了一个问题。在 SubtitleCustomField 类中,我收到关于 if CellIdentifier == "A"
的错误信息
Static member 'CellIdentifier' cannot be used on instance of type 'SubtitleCustomField'
实现我想要的目标的最佳方法是什么?总之,我想在 SubtitleCustomField 之外设置 CellIdentifier 变量,并使用我在 SubtitleCustomField 类中设置的值触发 if 语句。
最佳答案
错误消息试图告诉您您正在引用一个类型属性(静态属性),就好像它是一个实例属性一样。您需要在 SubtitleCustomField 初始值设定项中使用“SubtitleCustomField”作为“CellIdentifier”的前缀,就像您在其他地方引用它时所做的那样。
override init(frame: CGRect) {
super.init(frame: frame)
if SubtitleCustomField.CellIdentifier == "A" {
//DO SOMETHINIG
} else if SubtitleCustomField.CellIdentifier == "B" {
//DO SOMETHING
}
}
您应该始终使用类型名称后跟“.”来引用类型属性。后跟属性名称。
关于ios - 访问静态变量并在类外设置它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34524967/