【发布时间】:2017-09-14 22:53:05
【问题描述】:
我最近才开始使用 Swift,并且在 viewDidLoad 方法中遇到了一个“奇怪”的错误。
我非常简单的应用目前只有 2 个视图控制器:
- MainViewController,它是应用程序的入口点,用作已创建数据的概览。它还提供了添加新数据的选项,这将触发对 的 segue
- DataViewController,提供 UI 以创建新数据,然后返回 MainViewController
现在我的问题是 MainViewController 的 viewDidLoad 方法总是在 MainViewController 出现时被调用(在应用程序开始时和每次 DataViewController 消失时)。特别是,总是打印消息“MainViewController new created”。
更糟糕的是,我的应用似乎正在“秘密”重置。为了说明这一点,我在 MainViewController 中定义了类变量“createView”,默认情况下为 true,并在 viewDidLoad 期间设置为 false(调用/设置此变量的唯一位置)。然而,在 MainViewController 出现后,消息“MVC new created”仍然总是打印在输出中。这个怎么可能?为什么/如何将 createView 重置为 true?
希望这个 sn-p 足以找到问题。否则,让我知道是否缺少某些东西。
感谢您的帮助!
override func viewDidLoad()
{
super.viewDidLoad()
if (createView)
{
determineArraySize()
createDataArray()
print("MainViewController newly created")
createView = false
}
else {print("Nothing happened")}
}
【问题讨论】:
-
DataViewController 和 MainViewController 之间的连接是什么样的?我的猜测是,您实际上是在将一个新实例推送到各种导航堆栈上。因此每次都重新创建 MainViewController。
-
提供您实际编写代码的代码以消失您的
DataViewController。 -
@moritz:我使用“Show(e.g. push)”转场(只是因为它是在情节提要中创建转场时的首选)。但是,我已将类型更改为“显示详细信息”和“模态显示”。没有效果,在输出中也没有,仍然表明调用了 viewDidLoad,也没有视觉效果(我做错了什么吗?)
标签: ios swift viewdidload