TransitionFromView supprime la vue précédente

J'ai des problèmes en utilisant TransitionfromView lors de la transition entre les vues dans mon application.

Installer

C'est la configuration de base du View Controller. Il a deux vues en elle. Un MKMapView et un UITableView. Lorsque le button bascule est enfoncé, il est supposé alterner les vues entre la carte et la table.

Ceci est mon file * .h

@interface BrowseBeaconsViewController : UIViewController <UITableViewDelegate, MKMapViewDelegate, UITableViewDataSource, CLLocationManagerDelegate > { __weak IBOutlet UIBarButtonItem *refreshBeacons; __weak IBOutlet UIBarButtonItem *toggleView; MKMapView* beaconMapView; __weak IBOutlet UITableView* beaconTableView; } 

Ainsi, la vue de table provient du storyboard tandis que mapview est créé dans le programme.

Problème

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

Lorsque je passe de TableView à partir de MapView, la valeur de la tableview est null (0x0000000). Je comprends le comportement de transitionfromview est de supprimer la vue de la vue parent. Mais quand j'essaye d'append la tableview en tant que sous-vue après la transition cela ne fonctionne pas, puisque la valeur est nulle. Donc, ma question est de savoir comment append la vue de table après la transition si la vue est annulée?

PS: Je m'excuse si c'est une question simple, mais je suis nouveau à la programmation iOS et j'ai essayé de regarder dans les forums avant de postr cette question.

À partir des documents sur cette méthode:

"Par défaut, la vue dans fromView est remplacée dans la hiérarchie par la vue dans toView Si les deux vues font déjà partie de votre hiérarchie, vous pouvez inclure l'option UIViewAnimationOptionShowHideTransitionViews dans le paramètre options pour simplement les masquer ou les afficher."

Donc, si vous voulez que les deux vues restnt, ajoutez beaconMapView à la hiérarchie de la vue et incluez l'option UIViewAnimationOptionShowHideTransitionViews.

Vous devez conserver une reference distincte à beaconTableView ou simplement la déclarer forte au lieu de faible. Comme beaconTableView a été déclaré faible, iOS 5+ comprend que vous n'avez pas besoin de le laisser traîner une fois que toutes les autres references ont été supprimées, dans ce cas en le supprimant de sa vue parente.

Supprimer faible, sinon la vue est libérée dès qu'elle ne semble plus nécessaire.