2013-01-08 8 views
8

Mam problemy z używaniem TransitionfromView podczas przechodzenia między widokami w mojej aplikacji.TransitionFromView usuwa poprzedni widok

Konfiguracja

Jest to podstawowa konfiguracja widoku kontrolera. Ma dwa widoki. MKMapView i UITableView. Po naciśnięciu przycisku przełączania ma on na zmianę widoki między mapą a tabelą.

To jest mój plik * .h

@interface BrowseBeaconsViewController : UIViewController <UITableViewDelegate, MKMapViewDelegate, UITableViewDataSource, CLLocationManagerDelegate > 
{ 

__weak IBOutlet UIBarButtonItem *refreshBeacons; 
__weak IBOutlet UIBarButtonItem *toggleView; 
MKMapView* beaconMapView; 
__weak IBOutlet UITableView* beaconTableView; 
} 

Więc tableview pochodzi z ujęć podczas MapView jest tworzony w programie.

problem

[UIView transitionFromView:beaconTableView toView:beaconMapView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {}]; 

Podczas przejścia z Tableview z MapView wartość tableview jest zerowy (0X0000000). Rozumiem zachowanie przejścia z viewfromview jest usunięcie widoku z widoku nadrzędnego. Ale gdy próbuję dodać widok tabeli jako widok podzbiór po przejściu, to nie działa, ponieważ wartość jest pusta. Moje pytanie brzmi: jak dodać widok tabeli po przejściu, jeśli widok jest zerowy?

PS: Przepraszam, jeśli to proste pytanie, ale jestem nowy w programowaniu na iOS i spróbowałem zajrzeć na fora przed opublikowaniem tego pytania.

Odpowiedz

29

Od docs na tej metodzie.

„Domyślnie, widok w fromView otrzymuje w hierarchii View od widoku w toview Jeśli oba poglądy są już częścią twojego widoku hierarchii, można zaliczyć UIViewAnimationOptionShowHideTransitionViews opcja w parametrze options, aby po prostu je ukryć lub pokazać. "

Jeśli chcesz, aby oba widoki pozostały, dodaj beaconMapView do hierarchii widoków i dołącz opcję UIViewAnimationOptionShowHideTransitionViews.

+0

Dzięki, że to zrobili. – omgpython

+0

bardzo fajne, dzięki – kernix

+0

To działa. Ale mam inne pytanie. Jak zdecydować, który widok jest z przodu? Ponieważ używam tego w komórce widoku kolekcji. –

2

Musisz zachować oddzielne odwołanie do beaconTableView lub po prostu zadeklarować je jako silne zamiast słabe. Ponieważ funkcja beaconTableView została uznana za słabą, system iOS 5+ rozumie, że nie ma potrzeby jej zawieszania po usunięciu wszystkich innych odniesień do niej, w tym przypadku poprzez usunięcie jej z widoku nadrzędnego.

0

Usuń słabe, w przeciwnym razie widok zostanie zwolniony, gdy tylko nie będzie już potrzebny.