如何使用动画切换视图 - Objective C

6

我有一个包含tableView和mapView的viewController,但只显示一个。此外还有一个带有两个按钮(列表和地图)的分段控制工具栏。

如何在表格视图和地图视图之间切换?并且很重要的是,工具栏将保持锁定状态而不会随着视图进行动画。

3个回答

10

经过更多的思考,我找到了解决方法,添加另一个视图作为表格视图和地图视图的容器视图。
这样我就能够实现:

   [UIView transitionWithView:self.someContainerView
                     duration:1.0
                     options:UIViewAnimationOptionTransitionFlipFromLeft 
                     animations:^{
                         self.mapView.hidden   = !showingMapView;
                         self.tableView.hidden = showingMapView;
                     } completion:nil
    ];  

不翻转工具栏


如果这是您解决问题的方法,请将其标记为正确答案。 - Mick MacCallum
怎么办?当我点击“接受答案勾号”时,它说我需要等两天才能接受自己的答案。 - Eyal
好的,抱歉我忘记了那个限制。只是确认一下! - Mick MacCallum

4
您可以使用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];
}

谢谢,问题在于我的工具栏也在动画,我认为这是因为它也是视图的子类。 - Eyal
@Eyal 你最有可能是指它是一个子视图而不是子类,对吗? - Till

1

尝试以下代码以显示表格和地图视图:

在segmentedControlIndexChanged中隐藏地图视图和表格视图:

- (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;
    }
}

谢谢,问题在于我的工具栏也在动画,我认为这是因为它也是视图的子类。 - Eyal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接