gpt4 book ai didi

ios - swift 如何通过关闭当前 View Controller 将数据推送到其他 View ?

转载 作者:行者123 更新时间:2023-12-01 18:38:05 35 4
gpt4 key购买 nike

我正在尝试将一些数据从我当前的 View Controller (我们称之为 BViewController)推回前一个 View Controller (我们称之为 AViewController)

但是,当我使用 performSegue 方法时,它会向我显示我想要的 AViewController,但会使屏幕底部的选项卡栏 Controller 消失(iirc 这是因为它使用 performSegue 方法创建了一个新的“ View ”?)

但是当我使用dismiss方法时,没有数据被传回(在self.performSegue的完成中也没有)

那么如何在底部仍然有标签栏 Controller 的同时将数据推送回 AViewController 呢?

这是我的代码

 // Push data to AViewController
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
var aViewController = segue.destination as? AViewController
if routineReps.isEmpty == false {
for i in 0...routineReps.count-1 {
routineViewController?.workOutNameArray.append(routineNames[i])
routineViewController?.workOutSetsArray.append(routineSets[i])
routineViewController?.workOutRepsArray.append(routineReps[i])
}
}
}

// Button Action to push data back to previous viewcontroller
@IBAction func completeAddingWorkoutButton(_ sender: UIButton) {

self.performSegue(withIdentifier: "addWorkoutsForTodaySegue", sender: self)
}

最佳答案

如前所述,您可以使用 代表 NSNotificationCenter 单例模式

场景是您从 A 类导航到 B 类,现在想要将数据从 B 类传递到 A,而您回到 A 类,您想要传递的数据

 Class A -> Navigates -> Class B
<- Sends Data back

代表 -

在 B 类中定义协议(protocol)

BViewController 类
 @objc
protocol ClassBDelegate {
func passingSomeValue(val : String)
}

class BViewController{
weak var delegate : ClassBDelegate! //define a variable of the protocol
func passValueWhenFromThisMethod(){
let someString = "this value will get passed"
delegate.passingSomeValue(someString)
self.navigationController?.popViewController(animated: true)
}
}

AViewController 类
  class AViewController{
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let segue.identifier = "segueidentifierforgoingtoclassBVC"{
var classBVC = segue.destinationViewController as! BViewController
classBVC.delegate = self
}
}
}

extension AViewController : ClassBDelegate{
func passingSomeValue(val : String){
print("Got this value from Class B: \(val)")
}
}

关于ios - swift 如何通过关闭当前 View Controller 将数据推送到其他 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48220162/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com