iOS Swift On Tab离开功能

时间:2015-07-24 15:38:11

标签: ios xcode swift

当用户点击其他标签时,他们可以调用的功能会被触发吗?例如:我使用viewwillappear&加载了viewdidload,但是我可以在退出时使用什么功能?

3 个答案:

答案 0 :(得分:1)

UITabBarController有一个委托(UITabBarControllerDelegate),它接收消息,告诉你会发生什么(例如tabBarController:shouldSelectViewController:)以及发生了什么(例如tabBarController:didSelectViewController:)。

您的视图控制器也会获得viewWillDisappear:,但这并不能区分这种情况(即可能由于其他原因而发生)。

答案 1 :(得分:1)

实施UITabBarControllerDelegate方法shouldSelectViewController

  1. 将UITabBarController的委托设置为指向您希望实现委托方法的类。
  2. 3:实施方法shouldSelectViewController

    extension MyClass: UITabBarControllerDelegate {
    
        func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {
    
            if let myController = viewController as? MyClass {
                // do something
            }
            return true
        }
    

答案 2 :(得分:1)

正如其他答案所说,将您已设置为tabBarController的类中的delegate委托方法定义到该tabBarController。选择tabItem时将调用此方法。此方法具有名为viewController的参数,这是您正在选择的参数。 selectedViewController的{​​{1}}属性具有您要离开的先前选择的视图控制器(例如,将要消失的视图控制器)。

在ObjC中

tabBarController

在斯威夫特:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
    if [tabBarController.selectedViewController isKindOfClass:[YourViewController class]] {
        // do something you want to do on your viewcontroller, where you are leaving from.
        YourViewController *yourViewController = (YourViewController *)tabBarController.selectedViewController;
        [yourViewController doSomething];
    }

    return YES
}