如何将数据从ViewController3传递到ViewController1

时间:2018-09-29 02:37:39

标签: ios swift segue

我是Swift的新手,我想知道如何将数据从ViewController传递到未通过Segue连接的ViewController。我已经花了2个小时来做​​这件事,但仍然想不出办法。

编辑:我很困惑的问题是如何取出所有堆叠的ViewController期望根ViewController,同时能够将数据从ViewController3中传递回第一个ViewController 'navigationController?.popToRootViewController(动画:false)'

def dict_invert(d):
    '''
    d: dict
    Returns an inverted dictionary according to the instructions above
    '''

    myDict = {}
    for key in d.keys():
        if d[key] in myDict:
            myDict[d[key]].append(key)
        else:
            myDict[d[key]] = [key]
    for val in myDict.values():
        val.sort()
    return myDict

print(dict_invert({8: 6, 2: 6, 4: 6, 6: 6}))

2 个答案:

答案 0 :(得分:0)

我找到了将ViewController3数据传输到ViewController的方法!

var vc3 = ViewController3()

然后在加载时将ViewController用作vc3的委托。

override func viewDidLoad() {
    super.viewDidLoad()
    vc3.namePassBack = self
}

然后回到ViewController3,在使用委托之前添加“ vc3”。

@IBAction func buttonPressed3(_ sender: Any) {
    vc3.namePassBack!.nameThatWasEntered(name: textfield3.text!)
    navigationController?.popToRootViewController(animated: false)
}

答案 1 :(得分:-1)

如果您使用segue,请使用'Unwind segue'

为此,在您的“视图控制器”中编写给定代码

@IBAction func unwindToThisViewController(segue: UIStoryboardSegue) {

}

在B_viewcontroller中,在按下按钮时调用“ Unwind segue”。

注意:-在Unwind segue的帮助下,您可以将3ed vc的值发送到1se vc,就像从1st vc到2nd vc发送值一样。

有关更多信息,请访问此link