ios - 将字符串变量数据从一个 Class/ViewController 传递到 Class/ViewController
问题描述
我有两个视图控制器:1. CheckoutVC 2. DeliveryTimeVC
在 DeliveryTimeVC 中,我有以下变量:
class DeliveryTimeVC: UIViewController {
var tableViewDay:String = ""
}
我使用以下推送从CheckoutVC
to DeliveryTimeVC
:
let storyboard = UIStoryboard(name: Storyboard.DeliveryTimeStoryboard, bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: StoryboardId.DeliveryTimeVC)
navigationController?.pushViewController(controller, animated: true)
在DeliveryTimeVC
我有一个 tableView 在 didSelect 上我返回CheckoutVC
并在didSelect
func 中我有以下代码在离开控制器之前附加我的变量:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableViewDay.removeAll()
tableViewDay.append(cell.weekDayLbl.text!)
navigationController?.popViewController(animated: true)
}
如何将 String 变量数据从DeliveryTimeVC
中的另一个变量传输CheckoutVC
?假设我在 CheckoutVC 中创建了一个变量:
class CheckoutVC: UIViewController, CartProductCellDelegate {
var tableViewDayTransferedData:String = ""
}
如何将数据tableViewDay:String
从tableViewDayTransferedData:String
解决方案
根据上面的@Hassan Shahbazi 评论,我能够稍微更改他的代码并获得适合我的最终答案:
protocol DeliveryTimeDelegate: class {
func didGetData(tableViewDayTransferedData: String)
}
class DeliveryTimeVC: UIViewController {
weak var delegate: DeliveryTimeDelegate?
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableViewDay.removeAll()
tableViewDay.append(cell.weekDayLbl.text!)
delegate?.didGetData(tableViewDayTransferedData: tableViewDay)
navigationController?.popViewController(animated: true)
}
}
class CheckoutVC: UIViewController, DeliveryTimeDelegate {
func ...() {
let storyboard = UIStoryboard(name: Storyboard.DeliveryTimeStoryboard, bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: StoryboardId.DeliveryTimeVC) as! DeliveryTimeVC
controller.delegate = self
navigationController?.pushViewController(controller, animated: true)
}
func didGetData(tableViewDayTransferedData: String) {
tableViewDayTransferedData = tableViewDayTransferedData
}
}
在最后一个函数中,您会看到两个相同的变量;他们只是有相同的名字:tableViewDayTransferedData = tableViewDayTransferedData
第一个来自 CheckoutVC。第二个来自协议。
推荐阅读
- apache-spark - reduceByKey 的分区方面
- javascript - Safari iframe cookie 问题
- tree - 在 Scheme 中绘制二叉树
- swift - 你可以在 iOS 应用程序中使用 Package.swift 而不是使用 .xcodeproj 吗?
- sql - 在 SQL 中计算同一个人存在多个观察值的唯一事件
- python - SQL。将年龄转换为出生日期
- c++ - 支持多个抽象类版本,无需明确指定版本
- javascript - 使用嵌套 ArrayBuffer 序列化 Java 对象?
- c# - C#:使用字符串参数从类列表中返回数据
- node.js - 我无法在 Node.js 中使用 multer upload.fields() 或 multer.arrays 上传文件