我正在嘗試使用委託將字符串值傳遞迴前一個視圖控制器。除了某些原因,我發回的字符串值沒有顯示在我希望的第一個View Controller的UITextField中,一切似乎都正常工作。難以將字符串傳遞迴Swift中的前一個視圖控制器
這裏是我的相關代碼:
視圖控制器「B」(一種傳遞數據回到以前的視圖控制器):
protocol CountryFieldProtocol {
func setField(countryName: String)
}
class TableViewController: UITableViewController {
var countryProtocol: CountryFieldProtocol?
...
func dismiss() {
for item in countries {
if item.isSelected == true {
print("what is the country selected?" + item.name)
countryProtocol?.setField(item.name)
}
}
self.navigationController?.popViewControllerAnimated(true)
}
這裏是視圖控制器「A」的代碼(一個從視圖控制器「B」)接收該數據:
func setField(countryName: String) {
textField.text = countryName
print("the country selected is:" + textField.text!)
}
@IBAction func textFieldEditing(sender: AnyObject) {
textField.resignFirstResponder()
let tableViewController = self.storyboard?.instantiateViewControllerWithIdentifier("CountryList") as? TableViewController
tableViewController?.countryProtocol = self
self.navigationController?.pushViewController(tableViewController!, animated: true)
}
在上述我的代碼,所述第二視圖控制器,當用戶選擇文本字段調用。然後用戶被帶到一個UITableView,用戶可以從列表中選擇一個項目。選擇完成後,用戶從導航欄中單擊「完成」按鈕,應該返回到第一個視圖控制器。
理論上,應該發生的事情是用戶從列表中選擇應該出現在第一個視圖控制器的文本框中。不幸的是,當選擇從第一個View Controller中的setField函數輸出到控制檯時,該字符串不會出現在textField中。任何人都可以看到我做錯了什麼嗎?
你的做法是不好的,如果你正在構建我建議使用尤里卡形式:https://github.com/xmartlabs/Eureka –
你能告訴你設置'countryProtocol'視圖控制器B – Paulw11
對你清除viewWillAppear或viewDidAppear中的textfield值?兩個函數都在setField完成後調用。如果我只用您發佈的代碼創建項目,它就可以工作。 –