2013-10-30 80 views
0

我有按钮page 1当我点击按钮我正在执行一些动画和导航到新页面说Page 2UIButton点击崩溃的应用程序

page 2有取消按钮,当我点击,我想回到我的先行页面,即Page 1,但点击取消按钮我的应用程序崩溃。

这里是Page 1:名称页CRViewController的是对Page 2:页RegistraionViewController的名称

- (IBAction)ClickMe:(id)sender { 
    RegistraionViewController *secondController = [[RegistraionViewController alloc] init]; 

    CATransition *transitionAnimation = [CATransition animation]; 
    [transitionAnimation setDuration:1]; 
    [transitionAnimation setType:@"push"]; 
    [transitionAnimation setSubtype:kCATransitionFromBottom]; 
    [transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]]; 

    [self.view.layer addAnimation:transitionAnimation forKey:kCATransitionFromBottom]; 
    [self.view addSubview:secondController.view]; 
} 

代码我的示例代码(在其崩溃的点击。)

- (IBAction)Click:(id)sender { 
    CRViewController *secondController = [[CRViewController alloc] init]; 

    CATransition *transitionAnimation = [CATransition animation]; 
    [transitionAnimation setDuration:1]; 
    [transitionAnimation setType:@"push"]; 
    [transitionAnimation setSubtype:kCATransitionFromTop]; 
    [transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]]; 

    [self.view.layer addAnimation:transitionAnimation forKey:kCATransitionFromBottom]; 
    [self.view addSubview:secondController.view]; 
} 
+0

当应用程序崩溃时,是否有任何错误信息? – dandan78

+0

@Krunal:显示如何创建取消按钮。 – TamilKing

+0

不,它只在我的日志中显示'lldb' – Krunal

回答

1

试试这个:

- (IBAction)ClickMe:(id)sender { 
    RegistraionViewController *secondController = [[RegistraionViewController alloc] init]; 
    [self.navigationController pushViewController:secondController animated:YES]; 
} 


- (IBAction) Click:(id)sender {  
    [self.navigationController popViewControllerAnimated:YES];  
} 

编辑:
对不起。如果你想定制一些的UIViewController过场动画,见下图:
UIViewController transition - objective-c
http://www.teehanlax.com/blog/custom-uiviewcontroller-transitions/
或者你可以试试这个:

- (IBAction)ClickMe:(id)sender { 
    RegistraionViewController *secondController = [[RegistraionViewController alloc] init]; 

    CATransition *transitionAnimation = [CATransition animation]; 
    [transitionAnimation setDuration:1]; 
    [transitionAnimation setType:@"push"]; 
    [transitionAnimation setSubtype:kCATransitionFromBottom]; 
    [transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]]; 

    [self.navigationController.view.layer addAnimation:transitionAnimation forKey:nil]; 
    [self.navigationController pushViewController:secondController animated:NO]; 
} 

- (IBAction)Click:(id)sender { 
    CRViewController *secondController = [[CRViewController alloc] init]; 

    CATransition *transitionAnimation = [CATransition animation]; 
    [transitionAnimation setDuration:1]; 
    [transitionAnimation setType:@"push"]; 
    [transitionAnimation setSubtype:kCATransitionFromTop]; 
    [transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]]; 

    [self.navigationController.view.layer addAnimation:transitionAnimation forKey:nil]; 
    [self.navigationController popToViewController:secondController animated:NO]; 
} 
+0

我想要一些动画。不推和流 – Krunal

+0

我试过这段代码,它工作。你应该确保你的控制器层次结构中有navigationController。 – Vincent

+0

动画来了,但动画后它加载相同的文件 – Krunal

0

你的问题是在撒谎的地方,因为子视图。我试过你的代码。

我在我的项目中用下面的代码做了一些动画,希望它对你有所帮助。

CATransition *animation = [CATransition animation]; 
    [animation setDelegate:self]; 
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]]; 
    [animation setDuration:0.8]; 
    [animation setType:kCATransitionFade]; 
    [animation setSubtype:kCATransitionMoveIn]; 

    //[[self.view layer]addAnimation:animation forKey:@"fview"]; 

    [self.navigationController.view.layer addAnimation:animation forKey:nil]; 

    [self.navigationController pushViewController:yourView animated:NO]; 

在动画类型中,你可以给你想要的动画。

希望能帮到你。

+0

无法看到动画:( – Krunal

+0

我在我的项目中正在运行此代码,请检查它是否传递了正确的视图名称。如果您在代码中推送视图而不是子视图,它会显示动画 – Manthan

+0

'RegistraionViewController * secondController = [[RegistraionViewController alloc] init]; CATransition * animation = [CATransition animation]; [animation setDelegate:self]; [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]]; [animation setDuration:0.8]; [animation setType:kCATransitionFade]; [animation setSubtype:kCATransitionMoveIn]; [self.navigationController.view.layer addAnimation:animation forKey:nil]; [self.navigationController pushViewController:secondController animated:NO];' – Krunal

0

*

- (IBAction)ClickMe:(id)sender { 
    RegistraionViewController *secondController = [[RegistraionViewController alloc] init]; 
    CATransition *transitionAnimation = [CATransition animation]; 
    [transitionAnimation setDuration:1]; 
    [transitionAnimation setType:@"push"]; 
    [transitionAnimation setSubtype:kCATransitionFromBottom]; 
    [transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]]; 
    [self.view.layer addAnimation:transitionAnimation forKey:kCATransitionFromBottom]; 
    [self addChildViewController:secondController]; 
    [self.view addSubview:secondController.view]; 
} 

* 第1页替换示例代码:上述再检查。

希望这对你有所帮助

相关问题