总是调用 ViewDidLoad

ViewDidLoad is always called

我最近才开始使用 Swift,我正面临 viewDidLoad 方法的 "weird" 错误。

我非常简单的应用目前只有 2 个视图控制器:

现在我的问题是 MainViewController 的 viewDidLoad 方法总是在 MainViewController 出现时被调用(在应用程序启动时和 DataViewController 每次消失时)。特别是,总是打印 msg "MainViewController newly created"。

更糟糕的是,我的应用程序似乎正在 "secretly" 重置。为了说明这一点,我在我的 MainViewController 中定义了 class 变量 "createView",默认情况下它是 true,并且在 viewDidLoad 期间设置为 false(这个变量是 called/set 的唯一地方)。然而,在 MainViewController 出现后,msg "MVC newly created" 仍然总是打印在输出中。怎么可能?为什么/如何将 createView 重置为 true?

希望这段代码足以找到问题所在。否则,如果缺少某些东西,请告诉我。

感谢您的帮助!

override func viewDidLoad() 
{
    super.viewDidLoad()


    if (createView)
    {
        determineArraySize()
        createDataArray()
        print("MainViewController newly created")
        createView = false

    }
    else {print("Nothing happened")}
}

正如@moritz 在评论中提到的,检查您在故事板中呈现 DataViewController 的方式。

如果视图以模态方式呈现,您应该调用:

dismiss(animated: true, completion: nil)

如果视图是使用 show seque 呈现的,您应该调用:

_ = navigationController?.popViewControllerAnimated(true)