在iOS中更改viewcontrollers时,boolean变量会自动初始化

时间:2018-03-02 05:23:01

标签: ios swift

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

class HomeViewController: BaseViewController {

    var isEnabled: Bool = true

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

override func viewWillDisappear(_ animated: Bool) {
        isEnabled = false
}

1 个答案:

答案 0 :(得分:1)

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

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

  

说明:与viewController1tab2相关联的Tab1与viewController2相关联。现在,当您运行应用程序时,您会看到选项卡1已被选中且viewController1正在查看中,并且您希望更改为tab2,此时您将点按tab2然后{{1对象将首次创建并加载到内存,因此其tabVieController2's方法将调用,不久之后它将显示在窗口中,viewDidLoad也将调用。现在,如果您尝试通过单击它们来更改标签,则只会调用viewWillAppear方法,因为它们已经在内存中。