我的viewDidAppear没有在视图控制器中调用

时间:2017-03-29 11:11:36

标签: ios swift uitabbarcontroller

事实证明,我想要做的是,当我来自3d快捷方式时,强制UITabBarController选择索引,如果我在标签栏viewDidAppear()中执行此操作,问题是我的主viewDidAppear()嵌入式的UIViewController未被调用,如果我再次单击选项卡栏项,则已经调用它。由于其余的驱动程序没有发生,我理解为什么它不是UITabBarController中项目列表中的第一个。

标签栏控制器:(此处出现)

override func viewDidAppear(_ animated: Bool) {
    if goTasks {
        self.selectedIndex = 0
    } else if goTodo {
        self.selectedIndex = 2
    } else if goProjects {
        self.selectedIndex = 3
    } else if goSearch {
        self.selectedIndex = 0
    }

}

我的第一个UIViewController: (不称为此方法)

override func viewDidAppear(_ animated: Bool) {
    print("Entry")
}

问题是override方法吗?任何解决方案?

4 个答案:

答案 0 :(得分:5)

在你的UITabBarController类 viewDidAppear func 中,调用它的超类,就像这样

 override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        if goTasks {
            self.selectedIndex = 0
        } else if goTodo {
            self.selectedIndex = 2
        } else if goProjects {
            self.selectedIndex = 3
        } else if goSearch {
            self.selectedIndex = 0
        }

    }

之后,您的第一个viewcontroller将调用此方法。

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    print("Entry")
}

答案 1 :(得分:0)

我认为你必须从super调用函数:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated) // here what i ment

    if goTasks {
        self.selectedIndex = 0
    } else if goTodo {
        self.selectedIndex = 2
    } else if goProjects {
        self.selectedIndex = 3
    } else if goSearch {
        self.selectedIndex = 0
    }

}

答案 2 :(得分:0)

override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
    if goTasks {
        self.selectedIndex = 0
    } else if goTodo {
        self.selectedIndex = 2
    } else if goProjects {
        self.selectedIndex = 3
    } else if goSearch {
        self.selectedIndex = 0
    }
}

你需要添加super.viewDidAppear(动画),希望它现在的单词

答案 3 :(得分:0)

我在做什么错误,我将super.viewDidAppear(true)放在了viewWillAppear出现块内。