我成功地在具有委托函数的视图控制器之间传递了一段数据(一个字符串变量、一个Int变量等)。然而,我还没有通过委托函数传递各种数据。
我得到以下错误:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0x7faea770db60> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key receivingAmountLabel.'
如果我删除
receingAmountLabel
,错误将转到另一个UI元素。如果我去掉那个元素,它会继续到另一个。
所有UI元素按其应有的方式连接。相关代码如下所示:
FirstVC。敏捷的
类FirstVC:UIViewController、DataSentDelegateMax{
@IBOutlet weak var receivingStringLabel: UILabel!
@IBOutlet weak var receivingAmountLabel: UILabel!
func userDidEnterData(stringData: String, amountData: Int) {
receivingStringLabel.text = stringData
receivingAmountLabel.text = String(amountData)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "showSecondVC") {
let secondVC = segue.destination as! SecondVC
secondVC.delegate = self
}
}
第二个VC。敏捷的
protocol DataSentDelegateMax {
func userDidEnterData(stringData: String, amountData: Int)
}
@IBOutlet weak var stringTF: UITextField!
@IBOutlet weak var amountTF: UITextField!
var delegate: DataSentDelegateMax? = nil
@IBAction func sendButtonAction(_ sender: Any) {
if delegate != nil {
if (stringTF.text != nil) {
if (Int(amountTF.text!) != nil) {
let stringData = stringTF.text
let amountData = Int(amountTF.text!)
delegate?.userDidEnterData(stringData: stringData!, amountData: amountData!)
dismiss(animated: true, completion: nil)
}
}
}
}
当我试图在代理中传递字典时,也会遇到同样的问题。