如何在 segue 之间传递值
How to Pass values in between segues
所以我有 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)
}
我想做的是,如果 expensesRecieved 的计数大于 0,则执行 segue 并传递该值,如果不是,则发出警报,什么都不做。
过去我使用过prepareSegue方法,但从来没有这样做过。我尝试了几种方法,一种是这样的,其中 none 行得通。请帮忙!
试试这个:
@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)
}
}
假设您在目标视图控制器中有一个名为 "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 启动时准备就绪。
所以我有 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)
}
我想做的是,如果 expensesRecieved 的计数大于 0,则执行 segue 并传递该值,如果不是,则发出警报,什么都不做。
过去我使用过prepareSegue方法,但从来没有这样做过。我尝试了几种方法,一种是这样的,其中 none 行得通。请帮忙!
试试这个:
@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)
}
}
假设您在目标视图控制器中有一个名为 "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 启动时准备就绪。