CATransition到其他视图工作,在转换回崩溃

我正在使用此代码从当前视图转换到另一个,它的工作原理。 问题是,当我尝试返回到当前视图的应用程序崩溃。

这是我用来从当前视图传递给新的代码:

CATransition *transition = [CATransition animation]; transition.duration = 0.75; // using the ease in/out timing function transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; transition.type = kCATransitionReveal; transition.subtype = kCATransitionFromRight; transition.delegate = self; // Next add it to the containerView's layer. This will perform the transition based on how we change its contents. [self.view.layer addAnimation:transition forKey:nil]; // Here we hide view1, and show view2, which will cause Core Animation to animate view1 away and view2 in. self.view.hidden = YES; MyMessages *info1=[[MyMessages alloc] initWithNibName:@"MyMessages" bundle:nil]; [self.view addSubview:info1.view]; info1.view.hidden = NO; self.view.hidden = NO; 

我尝试返回使用此代码:

 CATransition *transition = [CATransition animation]; transition.duration = 0.75; // using the ease in/out timing function transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; transition.type = kCATransitionReveal; transition.subtype = kCATransitionFromLeft; transition.delegate = self; // Next add it to the containerView's layer. This will perform the transition based on how we change its contents. [self.view.layer addAnimation:transition forKey:nil]; // Here we hide view1, and show view2, which will cause Core Animation to animate view1 away and view2 in. self.view.hidden = YES; FirstViewController *info1=[[ FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; [self.view addSubview:info1.view]; info1.view.hidden = NO; self.view.hidden = NO; 

这是在UITabBarControllerUIView和新的UIView之间进行转换所需的代码。 代码进入一个button的IBAction ,它存在于UITabBarController一个UIView中。

 //initialize the app delegate AppDelegate appDelegate = (AppDelegate) [[UIApplication sharedApplication] delegate]; // get the view that's currently showing UIView *currentView = self.view; // get the the underlying UIWindow, or the view containing the current view view UIView *theWindow = [currentView superview]; // remove the current view and replace with mynewView1 [currentView removeFromSuperview]; //assign the new view to the viewcontroller1. It is the first uiviewcontroller of the uitabbarcontroller. My uitabbarcontroller consists of five uiviewcontrollers in my project. The button exists in the first viewcontroller1 this is why i am assigning the new view to the viewcontroller1. If the button was pressed from the secondviewcontroller (viewcontroller2) of my uitabbarcontroller i will assign the new view to the secondviewcontroller (viewcontroller2) and so on... appDelegate.viewController1=[[MyMessages alloc] initWithNibName:@"MyMessages" bundle:nil]; //add it to the window [theWindow addSubview:appDelegate.viewController1.view]; // set up an animation for the transition between the views CATransition *animation = [CATransition animation]; [animation setDuration:0.5]; [animation setType:kCATransitionPush]; [animation setSubtype:kCATransitionFromRight]; [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; [[theWindow layer] addAnimation:animation forKey:@"SwitchToView1"]; 

感谢您的帮助! 我一直在尝试这一个多天来实现它。 我希望这会帮助有同样问题的人。