我一直在尝试单独在Swift中进行挑战,以编程方式进行 - 不使用故事板。
我的第一个视图控制器有一个标签和一个按钮,可以转到第二个视图控制器。
我在app delegate
文件中创建了一个导航控制器,然后在按下按钮时推送到第二个视图控制器。
第二个视图控制器有一个文本字段,一个用于保存文本的按钮,以及一个返回第一个视图控制器的按钮。
UI很好,但我无法弄清楚如何保存输入到第二个视图控制器上的文本字段中的文本,然后在第一个视图控制器的标签中显示该文本。
有人可以告诉我如何做到这一点吗?
目前在我的按钮回到第一个视图控制器我有这个:
func handleBackToVC1() {
self.navigationController?.popViewController(animated: true)
}
这是我传递文本字段中的数据并将其显示在标签中的位置吗? 另外,我应该给标签一些文字开头吗?但是哪些会改变为输入到文本域的内容?
答案 0 :(得分:1)
使用协议委托将数据从SecondViewController传递到FirstViewController
protocol TextFieldDataDelegate: class {
func saveText(_ text: String)
}
class SecondViewController: UIViewController {
weak var delegate: TextFieldDataDelegate?
//on save button tap call the delegate method
delegate?.saveText(textField.text)
}
//set FirstViewController as delegate for TextFieldDataDelegate protocol
class FirstViewController: UIController, TextFieldDataDelegate {
// when you create instance of SecondViewController assign the delegate as self
let secondVC = SecondViewController()
secondVC.delegate = self
//in saveText set label text as passed from SecondVC
func saveText(_ text: String) {
self.textLabel.text = text
}
}
注意:有许多类似的问题,例如this,在提问之前总是会进行搜索。感谢