总是调用 ViewDidLoad
ViewDidLoad is always called
我最近才开始使用 Swift,我正面临 viewDidLoad 方法的 "weird" 错误。
我非常简单的应用目前只有 2 个视图控制器:
- MainViewController,这是 Apps 的入口点,用作已创建数据的概览。它还提供了添加新数据的选项,这将触发到
的 segue
- DataViewController,提供UI创建新数据,之后返回MainViewController
现在我的问题是 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)
我最近才开始使用 Swift,我正面临 viewDidLoad 方法的 "weird" 错误。
我非常简单的应用目前只有 2 个视图控制器:
- MainViewController,这是 Apps 的入口点,用作已创建数据的概览。它还提供了添加新数据的选项,这将触发到 的 segue
- DataViewController,提供UI创建新数据,之后返回MainViewController
现在我的问题是 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)