繁体   English   中英

推送到UINavigationController时停止UITableView Animation

[英]Stop UITableView Animation on push to UINavigationController

我将包含tableiview的视图控制器推到我的uinavigation控制器上:

CourseMenuViewController *mvc = [[[CourseMenuViewController alloc] initWithSlidingNavigationcontroller:self.slidingNavigationController] autorelease];
mvc.course = course;
[self.navigationController pushViewController:mvc animated:YES];
[self.navigationController setNavigationBarHidden:NO animated:NO];

到目前为止,一切正常。 当我观看动画并看到所有的表格视图行从屏幕顶部向下动画时,就会发生问题,因为该视图是从左侧进行动画制作的。 这使得感觉就像是在对角线路径中从左上角移动到右下角。

我的问题是,如何使表格视图仅显示而不是动画? 我应该补充一点,我所有的单元格都是静态的,所以我不必等待NSFetchedResultsController的任何数据或类似的东西。

下面的roronoa使我走上了正确的道路,这是现在可以使用的版本:

CourseMenuViewController *mvc = [[[CourseMenuViewController alloc] initWithSlidingNavigationcontroller:self.slidingNavigationController] autorelease];
mvc.course = course;

CATransition *caTransition = [CATransition animation];
caTransition.duration = 0.35;
caTransition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
caTransition.delegate = self;
caTransition.type = kCATransitionPush;
caTransition.subtype = kCATransitionFromRight;
[self.navigationController.view.layer addAnimation:caTransition forKey:nil];

[self.navigationController pushViewController:mvc animated:NO];

您没有提到有关课程CourseMenuViewController和initWithSlidingNavigationcontroller的详细信息,但是您可以使用以下代码完成工作:

CourseMenuViewController *mvc =[[CourseMenuViewController alloc] init];
[UIView  beginAnimations:nil context:NULL];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];
[self.navigationController pushViewController:mvc animated:NO];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
[UIView commitAnimations];
[mvc release];

通过根据需要更改动画常量,可以在上面的代码中具有所需的任何类型的动画,而不会在桌面视图上出现不需要的动画。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM