如何使用一个变量或从一个视图控制器转移到另一个视图控制器

时间:2018-06-19 17:00:02

标签: ios swift

我制作了一个弹出视图控制器,但是现在我正尝试通过prepare函数将数据从弹出窗口传递到视图控制器。让我们看一下。

// this is from the pop up view controller

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let toBeMoved :ViewController = segue.destination as! ViewController
    toBeMoved.enterVC()
    amountEntered.text = "\(runningNumber1)"
} 

// and I added a func in my main VC but I can't get the var in the VC
// totalCash is a label to be changed when the amount is entered from the
// pop up vc

func enterVC () {
    totalCash.text = "\(amountEntered)"
}

我将enterVC添加到了viewDidLoad

2 个答案:

答案 0 :(得分:0)

尝试一下,看看:

class TestVC: UIViewController {

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let toBeMoved :ViewController = segue.destination as! ViewController
        toBeMoved.amountEntered = runningNumber1
        toBeMoved.enterVC()
    }

}

class ViewController: UIViewController {   
    var amountEntered: Int = 0
    func enterVC () {
        totalCash.text = "\(amountEntered)"
    }
}

或也尝试一下。

class TestVC: UIViewController {

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let toBeMoved :ViewController = segue.destination as! ViewController
        toBeMoved.enterVC(amountEntered: runningNumber1)
    }

}


class ViewController: UIViewController {      
    func enterVC (amountEntered: Int) {
        totalCash.text = "\(amountEntered)"
    }
}

答案 1 :(得分:0)

//结果,我需要放一个防护罩以使这项工作还像原来那样在原始视图控制器中添加了IBAction:

class ViewController : UIViewController {

@IBAction func didUnwindSegue (sender: UIStoryboardSegue){
        guard let realVC = sender.source as? ViewController else {
            return
        }

    }


}

class TestVC : UIViewController {

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        guard let realVC = segue.destination as? ViewController else {
                return
        }
        realVC.totalCash.text = runningNumber1
    }


}