要在视图控制器之间传递数据,可以使用以下方法:
protocol DataTransferDelegate: class {
func sendData(data: Any)
}
class SenderViewController: UIViewController {
weak var delegate: DataTransferDelegate?
// 数据准备和传递
func prepareDataAndSend() {
let data = "要传递的数据"
delegate?.sendData(data: data)
}
}
class ReceiverViewController: UIViewController, DataTransferDelegate {
// 实现协议方法
func sendData(data: Any) {
if let receivedData = data as? String {
// 处理接收到的数据
print("接收到的数据:\(receivedData)")
}
}
// 在合适的地方设置委托
func setDelegate() {
let senderVC = SenderViewController()
senderVC.delegate = self
}
}
class SenderViewController: UIViewController {
// ...
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let receiverVC = segue.destination as? ReceiverViewController {
receiverVC.delegate = self.delegate
let data = "要传递的数据"
delegate?.sendData(data: data)
}
}
}
通过以上方法,你可以在视图控制器之间传递数据,而无需使用故事板中的“Show”连线。