击中按钮后,通过segue传递的数据丢失

时间:2017-06-28 00:35:43

标签: ios iphone swift view segue

我有两个视图控制器A和B以及一个从A到B的segue(类型:show)到下一个按钮和一个从B到A的segue(类型:show)到后退按钮。我将一些数据通过segue A传递给B.如果我只是从控制器A点击下一步并转到控制器B,则数据显示正确。

但是,如果我点击下一步并转到控制器B然后回击并返回A然后再次点击,则无效。有什么想法在这里发生?抱歉令人困惑的语言。

3 个答案:

答案 0 :(得分:0)

听起来你的“B到A”是错误的,你正在使用导航堆栈,因此你只能在向前移动时按下(显示)。向后退时你应该弹出顶部(解雇)

如果你继续推动,应用程序将继续将越来越多的ViewControllers放入内存,这很糟糕。

我怀疑这里发生的是View A最初有数据并将其传递给View B.然后当你按下后退按钮时,它会创建一个View A的新副本,它没有数据并显示而不是原始视图A.

简而言之:( A到B:类型 - 显示)(B到A:关闭当前的ViewController)

答案 1 :(得分:0)

我同意user2877496,因为你不应该使用常规的segue从B回到A,因为你将添加" A"每次都在堆栈上。 我只想添加一种方法来解雇B并回到A是通过使用Unwind Segue。 Apple文档很好地涵盖了这一点 https://developer.apple.com/library/content/technotes/tn2298/_index.html

答案 2 :(得分:0)

你解决了吗?我的猜测是你把东西放在viewDidLoad中执行(它只在应用程序的开头运行一次),它需要在viewWillAppear中,所以每次你返回主视图控制器时都会调用它。如果您需要进一步的帮助,请提供这些方法的代码。