TransitionFromView删除先前的视图

我在使用TransitionfromView时在我的应用程序中的视图之间转换时遇到问题。

build立

这是视图控制器的基本设置。 它有两个观点。 一个MKMapView和一个UITableView。 当按下切换button时,应该在地图和表格之间切换视图。

这是我的* .h文件

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

所以tableview来自故事板,而mapview是在程序中创build的。

问题

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

当我从TableView从MapView转换时,tableview的值为空(0x0000000)。 我明白transitionfromview的行为是从父视图中删除视图。 但是,当我尝试添加tableview作为子视图后,它不起作用,因为值为null。 所以我的问题是如何在转换后添加tableview如果视图是无效的?

PS:我很抱歉,如果这是一个简单的问题,但我是iOS编程的新手,并且在发布这个问题之前尝试在论坛中寻找。

从该方法的文档:

“默认情况下,fromView中的视图被viewView中的视图replace,如果这两个视图已经是视图层次结构的一部分,那么可以在options参数中包含UIViewAnimationOptionShowHideTransitionViews选项,以便隐藏或显示它们。

因此,如果您希望这两个视图保持不变,请将beaconMapView添加到视图层次结构中,并包含UIViewAnimationOptionShowHideTransitionViews选项。

您需要对beaconTableView单独进行引用,或者将其声明为强而不是弱。 由于beaconTableView已被声明为弱,所以iOS 5 +明白,一旦所有其他引用都被删除,就不需要挂起它,在这种情况下,将其从父视图中移除。

移除弱,否则视图不再需要时立即释放。