在我的应用中的视图之间转换时,我遇到使用TransitionfromView的问题。
设置
这是View Controller的基本设置。它有两个视图。一个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) {}];
当我从MapView从MapView转换时,tableview的值为null(0x0000000)。我确实理解transitionfromview的行为是从父视图中删除视图。但是当我尝试在转换后将tableview添加为子视图时它不起作用,因为该值为null。所以我的问题是如果视图被清空,如何在转换后添加tableview?
PS:如果这是一个简单的问题我很抱歉,但我是iOS编程新手并且在发布此问题之前尝试查看论坛。
答案 0 :(得分:30)
来自该方法的文档:
“默认情况下,fromView中的视图在视图层次结构中被toView中的视图替换。如果两个视图都已经是视图层次结构的一部分,则可以在options参数中包含UIViewAnimationOptionShowHideTransitionViews选项,以简单地隐藏或显示它们。“
因此,如果您希望保留两个视图,请将beaconMapView添加到视图层次结构中,并包含UIViewAnimationOptionShowHideTransitionViews选项。
答案 1 :(得分:2)
您需要对beaconTableView保持单独的引用,或者只是将其声明为强而不是弱。由于beaconTableView已被声明为弱,因此iOS 5+了解一旦删除了对它的所有其他引用,就不需要它,在这种情况下,将其从父视图中删除。
答案 2 :(得分:0)
删除弱,否则视图会在不再需要时立即释放。