事实证明,我想要做的是,当我来自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
方法吗?任何解决方案?
答案 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
出现块内。