我有一个带有 4 个标签的 UITabBar
。
当 tabBarItem
被按下两次时,我想在选项卡的每个 ViewController
中调用一个特定的函数(比如,用户现在在 ProfileVC
并按下 Profile
项,我想刷新 View )。
我如何才能检测到用户何时按下了他现在在其 View 中的选项卡?
谢谢!
最佳答案
一个选项是在 viewWillAppear()
方法中进行刷新。第二个相当长。
在父 View Controller 中
protocol ParentDelegate {
func refresh()
}
class LandingViewController: UIViewController, UITabBarDelegate {
var delegate: ParentDelegate?
var selectedItem: UITabBarItem!
override func viewDidLoad() {
super.viewDidLoad()
self.tabBar.delegate = self
self.selectedItem = self.tabBar.selectedItem
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "SegueNameForDestinationViewController1" {
if let vc = segue.destinationViewController as? YourDestinationViewController1 {
self.delegate = vc.self
}
} else if segue.identifier == "SegueNameForDestinationViewController2" {
if let vc = segue.destinationViewController as? YourDestinationViewController2 {
self.delegate = vc.self
}
}
}
func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
if self.selectedItem == item {
self.delegate?.refresh()
}
self.selectedItem = item
}
}
在每个选项卡 View Controller 中,
class TabViewController: UIViewController, ParentDelegate {
func refresh() {
//write your code here
}
}
关于ios - 检测页面何时按下 tabBar 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38835276/