INavigationController时停止UITableV

INavigationController时停止UITableV

我将包含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];


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

关于ios - 推送到UINavigationController时停止UITableView Animation,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10821359/

10-11 03:27