按下UITabBar按钮后执行方法,但AFTER和BEFORE视图转换

时间:2014-04-25 15:37:16

标签: ios uiview uitabbarcontroller

我需要在按下tabBar按钮后运行方法,但是在视图转换之前。并在视图转换后运行第二种方法。目标是添加退出/输入效果。

我尝试使用

ViewDidAppear 

ViewWillDisapear

但它不起作用。

另外,

- (void)tabBarController:(UITabBarController *)tabBarController 
 didSelectViewController:(UIViewController *)viewController

似乎不允许在切换视图之前/之后执行动画。

有没有人知道如何做到这一点?

提前致谢。

1 个答案:

答案 0 :(得分:0)

试试这个,看看它是否有效。对于之前的动画,实现tabBarController:shouldSelectViewController:和put 你的动画代码。在动画的完成块中返回YES,因此切换到新选项卡将被延迟,直到动画结束。后动画应放在您要移动到的标签的viewDidAppear方法中。

编辑后:

它比上面的答案稍微复杂一点,所以必须通过调用tabBarController中的方法来完成:shouldSelectViewController:执行动画,然后选择视图控制器移动到 - 通过选择在代码中,委托方法不会再次被调用。这是我只是在动画块中移动视图的示例

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
    [self completeTabChangeToController:viewController];
    return NO;
}


-(void)completeTabChangeToController:(UIViewController *) controller {
    self.bottomCon.constant = 50;
    [UIView animateWithDuration:.5 animations:^{
        [self.view layoutIfNeeded];
    } completion:^(BOOL finished) {
        [self.tabBarController setSelectedViewController:controller];
    }];
}