一尘不染

使用Swift反转Segue时如何在iOS中传递信息?

swift

我有两个视图控制器,一个和两个。我从VC一到VC二。在VC 2上,我选择一些存储在数组中的数据。当我按下导航栏上的“返回”按钮时,我想将该阵列发送回VC
One。

使用Swift和Storyboards做到这一点的最佳方法是什么?

谢谢!


阅读 179

收藏
2020-07-07

共1个答案

一尘不染

如果要使用“完成”和“取消”按钮(有点像选择器)来显示模式视图,则在展开segue方法期间获取值可能是最简单的。

假定您要使用导航控制器的本机“后退”按钮,则最佳实践可能是实施VC One可以遵循的协议,并在选择VC Two上的数据后立即更新VC One。就像是:

在VCTwo.swift中:

protocol VCTwoDelegate {
    func updateData(data: String)
}

class VCTwo : UIViewController {
    var delegate: VCTwoDelegate?
    ...
    @IBAction func choiceMade(sender: AnyObject) {
        // do the things
        self.delegate?.updateData(self.data)
    }
    ...
}

并在VCOne.swift中:

class VCOne: ViewController {
    ...
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "VCTwoSegue" {
            (segue.destinationViewController as VCTwo).delegate = self
        }
    }
    ...
}

extension VCOne: VCTwoDelegate {
    func updateData(data: String) {
        self.internalData = data
    }
}
2020-07-07