我有一个视图控制器,它有一个表视图和一个地图视图,只有一个是可见的。我还有一个带有两个按钮(列表和地图)的分段控制的工具栏
如何在表视图和地图视图之间切换? 工具栏将保持锁定状态,而不会随视图进行动画处理,这一点很重要。
经过更多思考,我找到了解决方案,为表视图和地图视图添加另一个视图作为容器视图。
这样我可以做到:
[UIView transitionWithView:self.someContainerView
duration:1.0
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
self.mapView.hidden = !showingMapView;
self.tableView.hidden = showingMapView;
} completion:nil
];
无需翻转工具栏
您可以使用UIView
动画过渡,传递过渡视图的超级视图:
- (IBAction)segmentIndexChanged {
BOOL showingMapView = (BOOL)self.segmentedControl.selectedSegmentIndex;
[UIView transitionWithView:self.view
duration:1.0
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
self.mapView.hidden = !showingMapView;
self.tableView.hidden = showingMapView;
} completion:nil];
}
尝试以下代码来显示表格和地图视图:
隐藏分段控件索引中的地图视图和表视图已更改:
- (IBAction)segmentedControlIndexChanged {
switch (self.segmentedControl.selectedSegmentIndex) {
case 0: //it's show tableview
[UIView transitionWithView: self.view
duration:1.0
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
self.mapView.hidden = YES;
self.tableView.hidden = NO; }
completion:nil];
break;
case 1: //it's show mapview
[UIView transitionWithView:self.view
duration:1.0
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
self.mapView.hidden = NO;
self.tableView.hidden = YES; }
completion:nil];
break;
default:
break;
}
}