不能更改父类的属性

时间:2014-12-10 15:27:01

标签: ios swift

我有一个视图控制器类:

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'的可变属性。”

此处的目标是能够从子类文件更改属性。如果你有线索的原因,请告知。

1 个答案:

答案 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)
}