2011-10-25 17 views
2

このコードを使用して現在のビューから別のビューに移行しています。問題は、現在のビューに戻るときにアプリがクラッシュすることです。他のビューへのトランジション、トランジションバック時のクラッシュ

これは私が新しいものに現在のビューから渡すために使用したコードです:

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; 

答えて

0

これはに必要なコードですUIViewUITabBarControllerと新しいUIViewの間の移行を行います。コードはUITabBarControllerUIViewのいずれかに存在するボタンのIBActionに行きます。

//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"]; 

ありがとうございます!私はこれを達成するために1日以上これを試してきました。私はそれが同じ問題を持つ人を助けることを願っています。

関連する問題