首页 > 解决方案 > 将字符串变量数据从一个 Class/ViewController 传递到 Class/ViewController

问题描述

我有两个视图控制器:1. CheckoutVC 2. DeliveryTimeVC

在 DeliveryTimeVC 中,我有以下变量:

class DeliveryTimeVC: UIViewController {
var tableViewDay:String = ""
}

我使用以下推送从CheckoutVCto 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并在didSelectfunc 中我有以下代码在离开控制器之前附加我的变量:

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:StringtableViewDayTransferedData:String

标签: iosswiftclassvariablesuiviewcontroller

解决方案


根据上面的@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。第二个来自协议。


推荐阅读