所以我正在开发一个应用程序,同时也在学习swift。我已经想出了如何将数据从secondViewController发送到firstViewController。从本质上讲,我已经完成了"完成"按钮到firstViewController,所以当我按下" Done"时,它会打开第一个viewController的新窗口,并提供我已经传递的数据。
但是,我正在寻找一种更新firstViewController的方法,而不会使用不同的segue打开另一个窗口。
解释这个的最好方法是我的firstViewController有一个" add"打开secondViewController的按钮。这个viewController有两个文本域,你在里面写东西(我希望用这两个文本框写的东西出现在第一个viewController上)&然后当你按下完成后,secondViewController会解散,你又回到了firstViewController上。
这是我正在使用的代码: (在secondViewController中)
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
var destinationviewcontroller : ViewController = segue.destinationController as! ViewController
destinationviewcontroller.LabelText = weblinklabel.stringValue
}
显然labeltext
是firstviewcontroller中的一个标签,它显示了在secondViewController中写入这些文本字段的内容。
问题在于,当我使用故事板时,只需拖动"完成"按钮到firstViewController,它会在新窗口中打开firstViewController并使用新数据/更新labeltext
。我想第二个ViewController在我按下"完成"并且更新的标签将显示在firstViewController上,而不会在新窗口中打开。
这有点难以解释,所以如果您需要更多细节以便澄清,我将非常乐意给予它!
提前致谢!
答案 0 :(得分:0)
是的,你应该使用unwind Segues as stated here。
首先,在您的firstViewController
中添加一个空@IBAction func unwindToFirstViewController (sender: UIStoryboardSegue) {
}
方法(请注意您应该直接编写):
Control+drag
编写完成后,现在在您的故事板中,您可以Done
Exit
按下secondViewController
项IBAction
中的@IBAction func unwindToFirstViewController (sender: UIStoryboardSegue) {
if let sourceViewController = sender.source as? SecondViewController {
// update whatever values you want
// to update in firstViewController from secondViewController
}
}
项,如下所示:
它应该弹出你将处理展开的新roundedContainer
方法,现在只需实现它:
shadowedView