swift - 使用闭包在两个 Controller 之间传递数据

标签 swift closures

我的问题看起来很简单,但由于我是初学者,我很难理解闭包在两个 Controller 之间传递数据的概念

例如我有一个静态 TableView Controller ,其中有一个单元格和一个标题

class FirstView: UITableViewController {

@IBOutlet weak var titleLabel: UILabel!

我有另一个 View Controller ,里面有一个按钮

class SecondViewController: UIViewController {


@IBAction func pressChangeButton(_ sender: UIButton) {

}

并且在这两个 Controller 之间有segue1,标识符为“segue1”

我想要一个简单的任务,我想添加一个 boolean 闭包,如果按下更改按钮,它将为 true。 这就是为什么我在第二个具有更改按钮的 View Controller 中创建闭包函数的原因。

var change : ((Bool) -> Void)?

我只是想,第二个 View Controller 告诉第一个 View Controller 更改关闭现在为真(在按下更改按钮之后),而第一个 View Controller 只是将其中的标题表更改为任何内容(我只是想看看如何做到)

我不知道我必须使用 prepare sugue 功能? 谁能帮助我理解这个概念?

最佳答案

你可以试试

class FirstView: UITableViewController {

    @IBOutlet weak var titleLabel: UILabel!

    @IBAction func goToSecond(_ sender: UIButton) {

        self.performSegue(withIdentifier: "segue1", sender: nil)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        if segue.identifier == "segue1" {
            let des = segue.destination as! SecondViewController
            des.change = { [weak self] (value) in
                print(value)
                self?.titleLabel.text = "SetValue"// set a value
            }
        }
    }

}
class SecondViewController: UIViewController {

    var change : ((Bool) -> Void)?

    @IBAction func pressChangeButton(_ sender: UIButton) {

        change?(true)
    }

}

关于swift - 使用闭包在两个 Controller 之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55891789/

相关文章:

ios - 在 ScrollView 中定义位置后更改设备方向时,Swift/SwitUI 应用程序崩溃

ios - 如何在 Swift 中组合正则表达式?

swift - 为什么这个闭包没有我期望的参数?

ios - 如何在 Swift4 中返回受线程影响的值

ios - UISegment 控件 - 根据日期设置选择 (SWIFT)

swift - 占屏幕一半的tabView

iOS 警报 View Controller

javascript - 我需要在 DOM 事件回调中使用闭包吗?

swift - future 在 Swift 3 中的实现

lua - 从 C 回调闭包时 GC 中的 MemFault