6

Mam viewController, który ma tableView i mapView i tylko jeden jest widoczny. Mam również pasek narzędzi z kontrolą segmentu z dwoma przyciskami (lista i mapa)Jak przełączać widoki z animacją - cel c

Jak przełączać się między widokiem tabeli a widokiem mapy? i ważne jest, aby pasek narzędzi pozostawał zablokowany bez animowania z widokami.

Odpowiedz

8

Po kolejnym myśleniu znalazłem rozwiązanie, dodaj inny widok jako widok kontenera zarówno dla widoku tabeli, jak i widoku mapy.
ten sposób mogę zrobić:

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

bez odwracania pasek

+0

Jeśli tak rozwiązałeś swój problem, oznacz go jako poprawną odpowiedź. –

+0

Jak? kiedy naciśniesz przycisk "zaakceptuj odpowiedź", oznacza to, że mogę przyjąć własną odpowiedź za dwa dni. – Eyal

+0

W porządku, przepraszam, zapomniałem o tym ograniczeniu. Tylko się upewniam! –

4

Można użyć przejścia UIView animacji, przechodząc Superview poglądy przejście:

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

dzięki problemem jest to, że mój pasek narzędzi jest także animowanie, myślę, bo jest również podklasą widoku – Eyal

+0

@Eyal najprawdopodobniej to znaczy, że jest to subview, a nie podklasa, prawda? – Till

+0

tak oczywiście podzbiór :) – Eyal

1

Spróbuj poniższy kod na pokaz stołem i MapView:

ukryć MapView i tableview w 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

dzięki temu problem jest taki, że mój pasek narzędzi też się ożywia, myślę, że ponieważ jest również podklasą widoku – Eyal