我有一个视图控制器类:
class PostImageController: UIViewController {
var textToChange:String = "original"
//Action run to change the text:
@IBAction func temp(sender: AnyObject) {
className().changeText()
println(textToChange)
}
}
此处的目标是从包含类的其他文件中将“原始”改为“新文本”。
我在视图控制器中调用的类文件中尝试了这个:
class className: PostImageController {
func changeText() {
super.textToChange = "New text"
}
}
哪个什么都没有。
而不是之前的例子仍然在类文件中:
override var textToChange: String {
return "Modified !!"
}
由于错误消息,我甚至无法构建:“无法覆盖具有只读属性'textToChange'的可变属性。”
此处的目标是能够从子类文件更改属性。如果你有线索的原因,请告知。
答案 0 :(得分:2)
使用self而不是super here
func changeText() {
self.textToChange = "New text"
}
另一个解决方案是在你的子类的init方法中初始化textTochange,如下所示:
init() {
super.init()
self.textToChange = "Modified !!"
}
但这里真正的问题是你在超类中打印textToChange。试试这个:
@IBAction func temp(sender: AnyObject) {
var subclassObject = className().changeText()
println(subclassObject.textToChange)
}