Ios 在显示页面时检测何时按下tabBar项

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

我有一个带有4个选项卡的
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
方法,您可以使用实例化子选项卡视图控制器的位置。