我正在尝试根据子视图中的buttonPressed事件(inputPopUp.swift)更新父视图中的标签(JL1EX3.swift)。我知道我需要实现代理/协议才能实现这一点,但是如何做到这一点却毫无头绪。这是我孩子视图中的代码:
weak var parentView: JL1EX3!
var char: String!
var buttonPressed = String()
//Setter
func setChar(var thisChar: String){
char = thisChar
}
//Getter
func getChar()-> String{
if (buttonPressed == "addButton"){
char = "+"
}
if (buttonPressed == "minusButton"){
char = "-"
}
if (buttonPressed == "divideButton"){
char = "/"
}
if (buttonPressed == "multiplyButton"){
char = "*"
}
println(char)
return char
}
@IBAction func addButtonPressed(sender: AnyObject) {
buttonPressed = "addButton"
setChar("+")
getChar()
self.parentView.tapLabel.text = getChar() //Does not work - returns nil
self.removeAnimate()
}
非常感谢您的帮助!!
答案 0 :(得分:0)
weak var parentView: JL1EX3!
不会分配父视图。所有这一行都声明了一个类JL1EX3
的变量。它不会创建对类JL1EX3
的任何特定实例的任何引用。
首先,我强烈建议您不要使用隐式展开。更好地声明您的父视图,如
weak var parentView: JL1EX3?
其次,确保分配parentView
变量。初始化inputPopUp
后,您应该这样做。
例如:
let myPopUp = inputPopUp()
myPopUp.parentView = self //this assigns the parentView. Otherwise it is nil
我希望这会有所帮助