Ios 在显示页面时检测何时按下tabBar项
我有一个带有4个选项卡的Ios 在显示页面时检测何时按下tabBar项,ios,objective-c,swift,cocoa-touch,uitabbarcontroller,Ios,Objective C,Swift,Cocoa Touch,Uitabbarcontroller,我有一个带有4个选项卡的uitabar 我希望在按下tabBarItem两次时,选项卡的每个ViewController中都会调用一个特定的函数(例如,用户现在打开ProfileVC并按下Profile项,我想刷新视图) 当用户按下选项卡时,我如何检测他现在是否在其视图中 谢谢大家! 一个选项是在viewwillappease()方法中进行刷新。第二个相当长 在父视图控制器中 protocol ParentDelegate { func refresh() } class Landi
uitabar
我希望在按下tabBarItem
两次时,选项卡的每个ViewController
中都会调用一个特定的函数(例如,用户现在打开ProfileVC
并按下Profile
项,我想刷新视图)
当用户按下选项卡时,我如何检测他现在是否在其视图中
谢谢大家! 一个选项是在
viewwillappease()方法中进行刷新。第二个相当长
在父视图控制器中
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
}
}
在每个选项卡视图控制器中
class TabViewController: UIViewController, ParentDelegate {
func refresh() {
//write your code here
}
}
你试过tabBar委托方法吗?看看这个答案。感谢您的回答,viewwillbeen()
在重新点击同一选项卡项时不会被调用。关于第二种选择,我没有使用故事板,我怎么能做到呢?谢谢第二个答案不需要故事板。哪一部分你不明白?segues只用于情节提要,不是吗?正确!我将修改answer@FS.O5,而不是prepareforsgue
方法,您可以使用实例化子选项卡视图控制器的位置。