我有一个显示静态UITableView
的{{1}}控制器。我必须更新提供辅助模式的项目,其中tableview
应该翻转并显示不同的数据。我的方法是将两种模式的所有静态单元格放在一个大的静态tableview
中,以执行翻转并隐藏在特定时刻不需要的单元格。翻转应仅在tableview
上执行,因此不会影响tableviewcontrollerview
或主navigationbar
。到目前为止,我一直试图用来实现这个简单的魔术的代码是:
tabbar
不幸的是结果是黑屏。知道怎么解决吗?
答案 0 :(得分:7)
请尝试使用以下代码:
[UIView transitionWithView:self.tableView
duration:0.7
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
/* any other animation you want */
} completion:^(BOOL finished) {
/* hide/show the required cells*/
}];
答案 1 :(得分:1)
我认为主要问题是,视图最多可以有一个超级视图。这意味着视图不能同时在两个地方。我会尝试将视图捕获为图像,并在动画之前将其添加到其超级视图上,并从其超视图中删除真实的tableview。然后,您可以在两个不同的视图(图像视图和表视图)之间设置动画。在完成块中,只需删除图像视图。
如何捕获视图:How to capture current view screenshot and reuse in code? (iPhone SDK)
答案 2 :(得分:1)
我使用略有不同的技术完成了这项工作。也许它对你有用。基本结构是有一个MainContainerView,里面是一个MapView(在你的情况下是一个表视图)。当我进行翻转动画时,我抓住一个单独的视图控制器(列表视图)的视图,并将其作为子视图添加到MainContainerView并从子视图中删除MapView。当我想要倒退时,我会做相反的事情。
-(void)listViewButtonHandler:(id)sender
{
if (_isMap) { //transition to view 2
self.listViewController.view.frame = self.mainContainerView.bounds; //grab the view of a separate VC
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
forView:self.mainContainerView
cache:YES];
[self.mapContainerView removeFromSuperview];
[self.mainContainerView addSubview:self.listViewController.view];
[UIView commitAnimations];
self.navigationItem.leftBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"mapButton"] target:self action:@selector(listViewButtonHandler:)]; //change the button to another title
_isMap = NO;
} else {
//transition to view 1
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
forView:self.mainContainerView
cache:YES];
[self.listViewController.view removeFromSuperview];
[self.mainContainerView addSubview:self.mapContainerView];
[UIView commitAnimations];
_isMap = YES;
self.navigationItem.leftBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"actualListButton"] target:self action:@selector(listViewButtonHandler:)]; //change the button back
}
}
我希望这有用,它可以适用于您的情况!