6

Tengo un control de vista que tiene un tableView y un mapView, y solo uno es visible. También tengo una barra de herramientas con control de segmento con dos botones (lista y mapa)Cómo cambiar vistas con animación - objetivo c

¿Cómo cambio entre la vista de tabla y la vista de mapa? y es importante que la barra de herramientas permanezca bloqueada sin animar con las vistas.

Respuesta

8

Después de pensar más, encontré una solución, agregué otra vista como una vista de contenedor tanto para la vista de tabla como para la vista de mapa.
De esta manera puedo hacer:

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

sin voltear la barra de herramientas

+0

Si así es como resolvió su problema, márquelo como la respuesta correcta. –

+0

¿Cómo? cuando presiono "aceptar respuesta", digo que puedo aceptar mi propia respuesta en dos días – Eyal

+0

Muy bien, lo siento, me olvidé de esa limitación. ¡Solo asegúrate! –

4

Se puede utilizar una transición UIView animación, pasando supervista las vistas en Transición:

- (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]; 
} 
+0

gracias el problema es que mi barra de herramientas también está animando, creo que porque él también es una subclase de la vista – Eyal

+0

@Eyal lo más probable significa que es una subvista y no una subclase, ¿correcto? – Till

+0

sí, por supuesto, una subvista :) – Eyal

1

Try a continuación el código de programa de mesa y MapView:

ocultar la MapView y tableview en 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; 
    } 
} 
+0

gracias, el problema es que mi barra de herramientas también está animando, creo que porque también es una subclase de la vista – Eyal