デリゲート関数を持つビューコントローラ間で1つのデータ(1つのString変数、1つの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.swift クラス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
}
}
SecondVC.swift
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)
}
}
}
}
私は同じ問題を取得しますデリゲートで辞書を渡そうとするとき。簡略化されたコード以下
に接続されていることを確認してください。それは 'FirstVC'ではなく' UIViewController'です。これが誤った接続(名前が変更されたなど)に起因する場合は、 '[ setValue:forUndefinedKey:]:' '[ setValue:forUndefinedKey:]: ' –
Larme
IBOutletsをもう一度取り外して接続しますか? –
このエラーは、通常、xibまたはストーリーボードのIBOutletが無効な場合(設定されていて、名前が変更された場合や削除された場合など)に発生します。これまでに示唆したように、IBファイルで無効な参照がないかチェックしてください。 –