Ios 按下UITabBar按钮后,但在视图转换前后执行方法
我需要在按下tabBar按钮之后,但在视图转换之前运行一个方法。并在视图转换后运行第二个方法。目标是添加退出/进入效果 我试着用Ios 按下UITabBar按钮后,但在视图转换前后执行方法,ios,uiview,uitabbarcontroller,Ios,Uiview,Uitabbarcontroller,我需要在按下tabBar按钮之后,但在视图转换之前运行一个方法。并在视图转换后运行第二个方法。目标是添加退出/进入效果 我试着用 ViewDidAppear 及 但它不起作用 而且 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 似乎不允许在切换视图之前/之后执行动画 有人知道怎么做吗 提前
ViewDidAppear
及
但它不起作用
而且
- (void)tabBarController:(UITabBarController *)tabBarController
didSelectViewController:(UIViewController *)viewController
似乎不允许在切换视图之前/之后执行动画
有人知道怎么做吗
提前谢谢。试试这个,看看是否有效。对于before动画,实现tabBarController:shouldSelectViewController:,并放置 你的动画代码在那里。在动画的“完成”块中返回“是”,以便切换到新选项卡将被延迟,直到动画结束。之后的动画应该放在您要移动到的选项卡的ViewDidAspect方法中 编辑后: 这比我上面的答案要复杂一点,所以必须通过调用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];
}];
}
ViewDidApper仅在视图第一次显示时执行,即在按下相应的选项卡栏按钮后显示视图的次数,该方法不被调用。此外,我在完成块中得到一个编译器错误,返回“是”。更正-ViewDidApper部分适用于我要移动到的视图。@Joao,我最初回答时不在我的编码计算机上,所以现在我已经测试了如何做,我编辑了我的答案。
-(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];
}];
}