[英]Pass several values between view controllers with delegates
我已經成功地在具有委托功能的視圖控制器之間傳遞了一塊數據(一個String變量,一個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)
}
}
}
}
嘗試在委托中傳遞字典時遇到相同的問題。
使用下面的簡化代碼:
if let del = delegate, let stringData = stringTF.text, let amountData = amountTF.text {
del.userDidEnterData(stringData: stringData, amountData: amountData)
dismiss(animated: true, completion: nil)
}
確保receiveAmountLabel插座已連接到FirstVC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.