我执行从场景1到场景2的分段。然后从场景2返回到场景1。我如何不仅将数据从场景2传递到场景1,而且在场景1中检测到我从场景2返回并在场景1中执行代码?
在安卓系统中,我使用startActivity和onActivityResult来做这件事。
发布于 2015-11-26 17:38:40
你可以这样做:
class SourceViewController: UIViewController {
var didReturnFromDestinationViewController = false
@IBAction func returnToSourceViewController(segue: UIStoryboardSegue) {
didReturnFromDestinationViewController = true
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
if didReturnFromDestinationViewController == true {
// reset the value
didReturnFromDestinationViewController = false
// do whatever you want
}
}
}
发布于 2018-09-20 06:19:55
我遇到的问题是,我试图在解开分段完成后显示一个警告对话框。因此,我的视图控制器2对视图控制器1执行了一个展开段。我发现,在调用展开段方法之后运行的代码在视图控制器2被解除之前运行,所以当我试图显示一个警告对话框时,一旦视图控制器2被解除,它就会消失。
如果其他解决方案对你不起作用,那就照我说的做。我向我的类添加了一个viewWillAppear重写,并在那里取消了父控制器,然后添加了警报对话框的代码。为了确保在第一次显示View Controller 1时viewWillAppear没有显示警告对话框,我设置了一个if语句来检查我在类中声明并设置为"“的变量的名称。然后在View Controller 2中,我将变量中的一些文本传递回View Controller 1,因此当if语句运行时,它会测试变量不等于"",当它发现它不等于“”时,代码就会运行。在我的例子中,这个变量被命名为"firstname“。
override func viewWillAppear(_ animated: Bool) {
if firstname != "" {
self.parent?.dismiss(animated: true, completion: nil)
//CustomViewController?.dismiss(animated: true, completion: nil)
let alertController = UIAlertController(title: "Hello", message: "This is a test", preferredStyle: .alert)
let defaultAction = UIAlertAction(title: "Close Alert", style: .default, handler: nil)
alertController.addAction(defaultAction)
present(alertController, animated: true, completion: nil)
}
}
https://stackoverflow.com/questions/33934895
复制相似问题