因此,我正在开发一个应用程序,同时也要学习敏捷。我已经弄清楚了如何将数据从secondViewController发送到firstViewController。本质上,我已将“完成”按钮链接到firstViewController,因此当我按“完成”时,它将打开第一个viewController的新窗口并提供我传递的数据。
但是,我正在寻找一种方法来更新firstViewController而不用不同的segue打开它的另一个窗口。
最好的解释方式是我的firstViewController有一个“添加”按钮,可以打开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时,它将在新窗口中使用新数据/更新的
labeltext
打开firstViewController。我希望secondViewController在我按下“完成”时关闭,并且更新的标签显示在firstViewController上,而无需在新窗口中打开它。这有点难以解释,因此,如果您需要更多详细信息进行澄清,我将非常乐意提供!
提前致谢!
最佳答案
是的,您应该使用展开Segues as stated here。
首先,在IBAction
中添加一个空的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
}
}
关于swift - Swift:将数据传递到PreviousViewController而不在新窗口中打开viewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40367139/