在iOS中更改视图控制器时,布尔变量自动初始化

问题描述 投票:-1回答:1

我的应用程序包含五个不同的选项卡当我在标签之间切换时,一次又一次地自动调用布尔变量的初始化。当我在声明/初始化变量上放置一个断点时,它将被自动调用。这将导致我的布尔变量值更改为true。请仔细阅读以下代码如何解决此问题。请帮我

class HomeViewController: BaseViewController {

    var isEnabled: Bool = true

}
override func viewWillAppear(_ animated: Bool) {
        isEnabled = true
}

override func viewWillDisappear(_ animated: Bool) {
        isEnabled = false
}
ios swift
1个回答
1
投票

您正在使用应用的标签视图。当你从一个标签切换到另一个标签viewWillAppear时,你的布尔变量isEnabled被设置为true,当移动到新标签时,它调用viewWillDisappear并设置为false。如果您不想更改isEnabled变量,则从viewWillAppearviewWillDisappear中删除,则不会更改值。您将获得分配给变量的最后一个值。

viewDidLoad方法只会调用一次viewController的生命周期,那就是当viewController对象首先加载到内存中时。每当一个视图出现在屏幕上时你会调用viewWillAppear方法,或者你可以说是topViewController ...

说明:与viewController1tab2相关联的Tab1与viewController2相关联。现在,当你运行你的应用程序,你会看到选项卡1被选中,viewController1正在查看,你想要更改为tab2,当你点击tab2然后tabVieController2's对象将创建并加载到内存第一次因此它的viewDidLoad方法将打电话,很快就会出现在窗口,viewWillAppear也会接到电话。现在,如果您尝试通过单击它们来更改标签,则只会调用viewWillAppear方法,因为它们已经在内存中。

© www.soinside.com 2019 - 2024. All rights reserved.