我的应用程序包含五个不同的选项卡当我在标签之间切换时,一次又一次地自动调用布尔变量的初始化。当我在声明/初始化变量上放置一个断点时,它将被自动调用。这将导致我的布尔变量值更改为true。请仔细阅读以下代码如何解决此问题。请帮我
class HomeViewController: BaseViewController {
var isEnabled: Bool = true
}
override func viewWillAppear(_ animated: Bool) {
isEnabled = true
}
override func viewWillDisappear(_ animated: Bool) {
isEnabled = false
}
您正在使用应用的标签视图。当你从一个标签切换到另一个标签viewWillAppear
时,你的布尔变量isEnabled
被设置为true
,当移动到新标签时,它调用viewWillDisappear
并设置为false。如果您不想更改isEnabled
变量,则从viewWillAppear
和viewWillDisappear
中删除,则不会更改值。您将获得分配给变量的最后一个值。
viewDidLoad
方法只会调用一次viewController
的生命周期,那就是当viewController
对象首先加载到内存中时。每当一个视图出现在屏幕上时你会调用viewWillAppear
方法,或者你可以说是topViewController ...
说明:与
viewController1
和tab2
相关联的Tab1与viewController2
相关联。现在,当你运行你的应用程序,你会看到选项卡1被选中,viewController1
正在查看,你想要更改为tab2
,当你点击tab2
然后tabVieController2's
对象将创建并加载到内存第一次因此它的viewDidLoad
方法将打电话,很快就会出现在窗口,viewWillAppear
也会接到电话。现在,如果您尝试通过单击它们来更改标签,则只会调用viewWillAppear
方法,因为它们已经在内存中。