ViewDidLoad始终被称为

时间:2017-04-18 22:40:30

标签: ios swift viewdidload

我最近刚开始使用Swift,并且面对一个使用viewDidLoad方法的“怪异”错误。

我非常简单的应用程序目前只有2个viewcontrollers:

  • MainViewController,它是Apps入口点,用作已创建数据的概述。它还提供了添加新数据的选项,这将触发segue到
  • DataViewController,提供创建新数据的UI,之后返回MainViewController

现在我的问题是MainViewController的viewDidLoad方法总是在MainViewController出现时被调用(在应用程序的开始和每次DataViewController消失时)。特别是,始终打印msg“新创建的MainViewController”。

更糟糕的是,似乎我的应用程序正在“秘密”重置。为了说明这一点,我在MainViewController中定义了类变量“createView”,默认情况下为true,并且在viewDidLoad(调用/设置此变量的唯一位置)期间设置为false。然而,在MainViewController出现后,仍然始终在输出中打印msg“MVC new created”。怎么可能?为什么/如何将createView重置为true?

希望这段代码足以找到问题所在。否则,如果遗漏了什么,请告诉我。

感谢您的帮助!

override func viewDidLoad() 
{
    super.viewDidLoad()


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

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

1 个答案:

答案 0 :(得分:1)

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

如果视图以模态显示,则应调用:

  

解雇(动画:真实,完成:无)

如果使用show seque显示视图,则应调用:

  

_ = navigationController?.popViewControllerAnimated(true)