【问题标题】:How to Pass values in between segues如何在 segues 之间传递值
【发布时间】:2018-02-10 11:50:38
【问题描述】:

所以我有 2 个视图控制器,我想在它们之间传递值并具有以下代码

@IBAction func analysisButton(_ sender: Any) {
    if expensesRecieved.count > 0{
        let categoryAnalysisController = storyboard?.instantiateViewController(withIdentifier: "CategoryVC") as! CategoryAnalysis
        //            var categoryAnalysisController: CategoryAnalysis = CategoryAnalysis(nibName: nil, bundle: nil)
        categoryAnalysisController.collection = collectionDisplayed.text
        self.performSegue(withIdentifier: "categoryAnalysis", sender:(Any).self)
    }

我想要做的是,如果费用接收的计数大于 0,则执行 segue 并传递值,如果不是,则发出警报并且不做任何事情。

过去我使用过 prepareSegue 方法,但从未这样做过。我尝试了几种方法,一种是这样的,但都没有奏效。请帮忙!

【问题讨论】:

标签: ios swift3 segue


【解决方案1】:

试试这个:

@IBAction func analysisButton(_ sender: Any) {
    if expensesRecieved.count > 0 {
        self.performSegue(withIdentifier: "categoryAnalysis", sender: nil)
    }
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "categoryAnalysis" {
        guard let viewController = segue.destination as? YourViewController else { return }
        viewController.expensesReceived = self.expencesReceived
    } else {
        super.prepare(for: segue, sender: sender)
    }
}

【讨论】:

    【解决方案2】:

    假设您在目标视图控制器中有一个名为“data_from_last_viewcontroller”的全局变量,您可以覆盖此方法并执行类似的操作,

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    
     if segue.identifier == "categoryAnalysis" 
     {
        if let dist = segue.destination as? YOURNEXTVIEWCONTROLLER
        {
             dest.data_from_last_viewcontroller = YOUR_DATA_TO_PASS_HERE  
        }
     }
    }
    

    这里发生了什么

    每次 segue 即将执行时都会调用此方法,在您的情况下,就在 performSegue 行之后。 它获取目标 Viewcontroller 并像这样设置目标 ViewController 的值,以便在新的 viewcontroller 启动时准备好。

    【讨论】:

      猜你喜欢
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多