2013-01-08 35 views
8

我在使用TransitionfromView时在我的应用程序中的视图之间转换时出现问题。TransitionFromView删除以前的视图

设置

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

这是我的* .h文件

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

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

所以tableview中来自故事板时,在程序中创建的MapView。

问题

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

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

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

回答

29

从那个方法的文档:

“默认情况下,在fromView视图替换在由toView视图视图层次。如果这两种观点都是你的视图层次结构中有一部分,可以包括选项参数中的UIViewAnimationOptionShowHideTransitionViews选项只是隐藏或显示它们。“

因此,如果您希望两个视图都保留下来,请将beaconMapView添加到视图层次结构中,并包含UIViewAnimationOptionShowHideTransitionViews选项。

+0

谢谢你做到了。 – omgpython

+0

很酷,谢谢 – kernix

+0

这个工程。但我还有一个问题。如何决定前面的视图?因为我在集合视图单元格中使用它。 –

2

您需要对beaconTableView保留一个单独的引用,或者将其声明为强而不是弱。由于beaconTableView已被声明为弱,因此iOS 5+会理解,一旦删除了其所有其他引用(在此情况下将其从其父视图中删除),就不需要挂起它。

0

删除弱点,否则只要看起来不再需要,视图就会被释放。