【发布时间】:2014-11-05 14:49:07
【问题描述】:
大家好,我在 Udemy 上一门课程,代码要求在 viewDidLoad 函数中放置代码,如下所示:
override func viewDidLoad() {
super.viewDidLoad()
placesArray.append(["name":"Taj Mahal", "lat":"27.175607", "lon":"78.042112"])
}
数组追加应该只运行一次,但是,当我转到另一个视图控制器并返回时,它会运行代码再次追加。所以我现在有一个有 2 行的数组,它们都是泰姬陵。
我以为viewDidLoad函数只运行一次代码?
有没有办法解决这个问题?
谢谢。
附录: 我使用的是 Swift,所以在创建和启动 viewController 时看不到任何 alloc 和 init。听起来很奇怪,视频教程让它在 viewDidLoad 中工作,并且培训师正在使用情节提要从初始表视图控制器到视图控制器上的地图视图,并且在地图视图上只有一个后退按钮也可以通过情节提要返回表格视图控制器。 - 可能是因为我有最新版本的 Swift 语言,而培训师使用的是早期版本,(因为我注意到之前的编码有些细微差别)但你永远不知道。无论哪种方式,只要他触摸后退按钮,它就不再运行附加代码。 我正在尝试与培训师联系,因为这里有一些建议,尽管它们很好,但似乎不起作用。 与培训师联系后,我会将解决方案放在这里。
【问题讨论】:
-
也许当你切换到另一个视图控制器时,旧的视图控制器是 dealloc,当你回来时它又加载了?!
-
你可能会带着一个不放松的转场回来。你不应该那样做。它创建了一个新实例,实际上并没有返回。